【发布时间】:2014-11-25 18:41:45
【问题描述】:
我正在尝试通过 wifi 连接将一些数据从我的 android 发送到外部传感器。虽然我能够通过 UDP 连接成功地将数据从传感器发送到 android,但我无法反其道而行之。发送数据的代码如下:
public void onClick(View v) {
Thread t = new Thread(){
@Override
public void run(){
while(true){
int server_port = 12345;
byte[] message = "1".getBytes();
System.out.println(message.toString());
try {
InetAddress local = InetAddress.getByName("255.255.255.255");
DatagramPacket p = new DatagramPacket(message,message.length,local,server_port);
DatagramSocket s = new DatagramSocket();
s.send(p);
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
t.start();
}
正如你在上面看到的,一个按钮的 OnClick,我希望应用程序通过 UDP 发送数据。问题是当我尝试这样做时,会发生此错误:
11-24 16:10:13.335: W/System.err(8077): java.net.SocketException: sendto failed: ENETUNREACH (Network is unreachable)
11-24 16:10:13.335: W/System.err(8077): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
11-24 16:10:13.335: W/System.err(8077):at libcore.io.IoBridge.sendto(IoBridge.java:475)
11-24 16:10:13.335: W/System.err(8077):at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
11-24 16:10:13.335: W/System.err(8077): at java.net.DatagramSocket.send(DatagramSocket.java:284)
11-24 16:10:13.343: W/System.err(8077): at com.example.waspmoteagriculture.MainActivity$3$1.run(MainActivity.java:97)
11-24 16:10:13.343: W/System.err(8077): Caused by: libcore.io.ErrnoException: sendto failed: ENETUNREACH (Network is unreachable)
11-24 16:10:13.343: W/System.err(8077): at libcore.io.Posix.sendtoBytes(Native Method)
11-24 16:10:13.343: W/System.err(8077): at libcore.io.Posix.sendto(Posix.java:151)
11-24 16:10:13.343: W/System.err(8077): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
11-24 16:10:13.343: W/System.err(8077): at libcore.io.IoBridge.sendto(IoBridge.java:473)
11-24 16:10:13.343: W/System.err(8077): ... 3 more
我已经包含了网络权限。另外我应该提到,传感器连接到 android 的 wifi 热点,以便将信息发送到手机。不知道这样接收数据有没有问题。
代码有什么问题还是这个错误与其他问题有关?提前谢谢你。
【问题讨论】: