疑难杂症系列 |
您所在的位置:网站首页 › udp广播包丢包 › 疑难杂症系列 |
网络UDP广播包发不出去或接收不到问题
发生背景症状代码原因禁用虚拟网卡的操作方式
更新于2020年1月03日
发生背景
使用电脑作为client端,局域网内发送广播。手机作为server端,监听65532端口。 症状单播情况下(指定Server端Ip地址),手机可以监听到数据; 广播情况下(Ip=255.255.255.255),手机监听不到数据。 代码 public class UDPClient { public static void main(String[] args) { try { //A.向服务器端发送数据 // 1.定义服务器的地址(指定IP发送)、端口号、数据 Optional ip4Address = (Optional) NetUtil.getLocalIp4Address(); byte[] data = ("我是客户端,我的Ip为" + ip4Address.get().getHostAddress()).getBytes(); // 2.创建数据报,包含发送的数据信息 DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName(UDP_HOST), UDP_PORT); // 3.创建DatagramSocket对象 DatagramSocket socket = new DatagramSocket(); // 4.向服务器端发送数据报 socket.send(packet); //B.接收客户端的响应 // 1.创建数据报,用于接收服务器端响应的数据 socket.setSoTimeout(1000 * 60); long startTime = System.currentTimeMillis(); while (startTime - System.currentTimeMillis() < 60 * 1000) { byte[] data2 = new byte[1024]; DatagramPacket packet2 = new DatagramPacket(data2, data2.length); // 2.接收服务器响应的数据 socket.receive(packet2); // 3.读取数据 String reply = new String(data2, 0, packet2.getLength()); System.out.println("我是客户端,服务器说:" + reply); } // 4.关闭资源 socket.close(); } catch (Exception e) { e.printStackTrace(); } } 原因找了好一会,没找到原因。网络上随便搜索了下,试试了居然真的是。 在公司最近项目中,有关设备搜索采用UDP广播方式搜索,出现的情况是,部分机器能正常接收到广播包,部分机器接收不到广播包,部分机器发送不了广播包情况,经过N天的查询,结果发现惊人的秘密:虚拟机网卡导致广播包发送不出去或接收不到问题!!!以上结果仅供各位大神参考! 补充一下,这文章发布几年了,一直有人问怎么设置,我也表示无语了,告诉是网卡问题,禁用虚拟机网卡不就OK了。。。 ———————————————— 版权声明:本文为CSDN博主「贝壳里的沙」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/lixiang987654321/article/details/41697533/ 禁用虚拟网卡的操作方式我的电脑上安装了vmware,所以我需要禁用它的网卡 1.在计算机(我的电脑或此电脑)上点击鼠标右键,选择【管理】,打开计算机管理控制器。 2.在计算机管理中,打开【设备管理器】,在右侧可以看到本计算机的所有硬件设备信息,点开【网络适配器】,就能看到本机所有的网卡了。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |