最近在写一个android到PC端的一个通过UDP协议传输广播数据包的问题。
使用自己搭建了一个网络框架:
connector = new DMUDPConnector();
String ip;
try {
ip = WifiUtils.getHotspotIPAddress();
} catch (WifiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
connector.registerAMessagepoolUsingDefault((byte) 0, StringUDPMessage.class);
connector.runListenReceiveUPDThread(8999,ip,1000,
new UDPMessageListener() {}
实例化datagramSocket以后,然后通过
message.setIpTo(“255.255.255”).setPortTo(8999);
connector.sendUDPMessageViaAnotherThread(message, true);
这里,在框架里面是使用下面的方法实例化 datagramSocket的
dataSocket = new DatagramSocket(listenPort,InetAddress.getByName(binip));
但是 奇怪的是无论如何 无论是手机自身还是PC端都不能接收到这个数据包。
开始以为是没有设置 this.dataSocket.setBroadcast(true);
不过 = =!
经过几番周折,结果发现是一开始就有问题:
dataSocket = new DatagramSocket(listenPort);
如果datagramSocket在实例化的时候不指定 IP 而只指定port。那么就可以了。
本文介绍了Android应用在通过UDP协议发送广播数据包到PC时遇到的问题及解决方案。在自定义网络框架中,使用DMUDPConnector注册并发送数据。最初,尝试通过获取热点IP设置DatagramSocket,但无论是否设置`setBroadcast(true)`,手机和PC都无法接收到数据包。最终发现,问题在于DatagramSocket实例化时应只指定端口而不指定IP,这样即可正常收发数据。
4万+





