遇到局域网广播消息部分电脑无法接收的问题,通常与网络配置、系统设置或代码实现有关。以下是详细的排查步骤和解决方案:
确认所有电脑在同一子网
执行命令 ipconfig /all
查看各电脑的:
192.168.1.x
)255.255.255.0
)测试基础连通性
在收不到广播的电脑上,用命令 ping 其他电脑IP
确认基础网络是否通畅。
192.168.1.100
,子网掩码 255.255.255.0
,则广播地址是 192.168.1.255
发送数据报 (套接字, "广播内容", 长度, 90111, "192.168.1.255")
netsh advfirewall set allprofiles state off
测试是否恢复正常,如果是,则需单独放行端口:
netsh advfirewall firewall add rule name="UDP 90111" dir=in action=allow protocol=UDP localport=90111
regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
IGMPLevel
1
(允许接收广播)UDP Helper
功能).版本 2
.支持库 sock
.子程序 发送广播
.局部变量 套接字, 整数型
.局部变量 广播地址, 文本型
.局部变量 发送内容, 文本型
套接字 = 创建套接字 (#AF_INET, #SOCK_DGRAM, #IPPROTO_UDP)
' 设置广播权限
置套接字选项 (套接字, #SOL_SOCKET, #SO_BROADCAST, 真)
' 计算广播地址(假设子网是192.168.1.0/24)
广播地址 = "192.168.1.255"
发送内容 = "这是测试广播消息"
发送数据报 (套接字, 发送内容, 取文本长度 (发送内容), 90111, 广播地址)
.版本 2
.支持库 sock
.子程序 __启动窗口_创建完毕
.局部变量 套接字, 整数型
套接字 = 创建套接字 (#AF_INET, #SOCK_DGRAM, #IPPROTO_UDP)
绑定 (套接字, 90111, "0.0.0.0") ' 监听所有网卡
时钟1.时钟周期 = 1000 ' 每秒检查一次
.子程序 时钟1_周期事件
.局部变量 数据, 文本型
.局部变量 来源IP, 文本型
.局部变量 来源端口, 整数型
数据 = 接收数据报 (套接字, 来源IP, 来源端口)
如果真 (数据 ≠ "")
编辑框1.加入文本 (数据 + #换行符)
抓包分析
在接收异常的电脑上使用Wireshark抓包,过滤UDP端口90111:
udp.port == 90111
检查网卡混杂模式
部分无线网卡默认过滤广播包,尝试:
netsh interface set interface "WiFi" admin=disable
netsh interface set interface "WiFi" admin=enable
更换测试端口
尝试改用更常见的广播端口(如20000-30000范围),避免与系统服务冲突。
如果是在公司/学校网络:
组播地址 = "224.0.0.100" ' 224.0.0.0~239.255.255.255
加入组播组 (套接字, 组播地址)
如果仍有问题,可以提供以下信息进一步诊断:
ipconfig /all
输出欢迎光临 精易论坛 (https://125.confly.eu.org/) | Powered by Discuz! X3.4 |