网络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<Inet4Address> ip4Address = (Optional<Inet4Address>) 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.在计算机管理中,打开【设备管理器】,在右侧可以看到本计算机的所有硬件设备信息,点开【网络适配器】,就能看到本机所有的网卡了。

windows系统禁用多余网卡禁用看不到的虚拟网卡
3.在不需要使用的网卡上点击鼠标右键,点击【禁用】就把对应的网卡停用了。需要时再点击鼠标右键【启用】就可以了。

windows系统禁用多余网卡禁用看不到的虚拟网卡
更新于2020年2月16日
我今天想使用一下VMVare
隐隐约约记得,曾经我是为了什么事情干了什么事情。可是我啥也想不起来,搜索半天,突然记起,我好像写了博客。我就过来看,卧槽,天了噜,幸亏幸亏。
果然好记性不如烂笔头,为自己点赞。

发布了72 篇原创文章 · 获赞 28 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/changhuzichangchang/article/details/103820849