Android使用wifi通过UDP协议发送广播数据包给PC接收不到问题解决方法

本文介绍了Android应用在通过UDP协议发送广播数据包到PC时遇到的问题及解决方案。在自定义网络框架中,使用DMUDPConnector注册并发送数据。最初,尝试通过获取热点IP设置DatagramSocket,但无论是否设置`setBroadcast(true)`,手机和PC都无法接收到数据包。最终发现,问题在于DatagramSocket实例化时应只指定端口而不指定IP,这样即可正常收发数据。


最近在写一个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。那么就可以了。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值