我有一个局域网,我想从我的机器人(HTC欲望)发送一条更新消息到我的电脑.他们之间有一个Wlan路由器.问题是,UPD消息永远不会到达PC.
package org.example.androidapp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPClientAnd { public void sendUDPMessage(int port) throws java.io.IOException { DatagramSocket socket = new DatagramSocket(); InetAddress serverIP = InetAddress.getByName("192.168.1.110"); byte[] outData = ("Ping").getBytes(); DatagramPacket out = new DatagramPacket(outData,outData.length,serverIP,50005); socket.send(out); socket.close(); } }
我在展位两侧选择一个高端口.
Android上的权限是:
uses-permission android:name="android.permission.INTERNET" uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"
服务器端是PC只是一个简单的接收程序:
package org.example.androidapp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.socketException; public class UPDServerAnd implements Runnable{ public void run(){ byte[] inData = new byte[48]; byte[] outData = new byte[48]; String message; DatagramSocket socket; try { socket = new DatagramSocket(50005); while (true) { DatagramPacket in = new DatagramPacket(inData,inData.length); socket.receive(in); InetAddress senderIP = in.getAddress(); int senderPort = in.getPort(); message=new String(in.getData(),in.getLength()); System.out.println("Got "+message+" from "+senderIP+","+senderPort); outData = "Pong".getBytes(); DatagramPacket out = new DatagramPacket(outData,senderIP,senderPort); socket.send(out); } } catch (SocketException e) { e.printstacktrace(); } catch (IOException e) { e.printstacktrace(); } } }
那么为什么没有来自android的UDP Package可见?甚至Wireshark也只显示了一些ARP包.
Plz帮助:)