精易论坛

标题: 求助一个局域网UDP广播问题! [打印本页]

作者: QWC    时间: 2025-5-25 21:39
标题: 求助一个局域网UDP广播问题!
做了一个局域网的广播(数据报的形式,不填IP),设置的端口为90111,有些电脑可以收到广播的消息,有些电脑却收不到,然后IP是在同一段下的,请问这一版是什么原因,该怎么解决呢,求助大佬!


作者: 黑咖啡    时间: 2025-5-25 21:59
检查端口有没有被占用。

补充内容 (2025-5-25 21:59):
指定监听数据到达的端口号,可以是大于 0 小于 32767 的任何自定数值。
作者: qingqingqp    时间: 2025-5-25 22:14
首先 防火墙关闭, 然后查看网卡获取的局域网ip是否处于同一设备下ip段是否符合
作者: baitso    时间: 2025-5-25 22:22
udp端口可以超过65535?
作者: 花辞    时间: 2025-5-26 11:05
一、端口冲突或占用问题 检查端口占用 虽然90111端口非常用端口,但部分安全软件或后台服务可能占用该端口。可以通过以下命令检测:   netstat -ano | findstr ":90111" 若发现占用,需修改广播端口或终止占用进程(参考端口冲突解决方法  17   18 )。  广播端口范围限制 UDP广播的有效范围为同一子网,若某些电脑的子网掩码设置不一致(如255.255.255.0 vs 255.255.0.0),可能导致广播域不同。需统一子网掩码配置。  二、防火墙或网络设备拦截 防火墙拦截  Windows防火墙可能默认拦截UDP广播包。需手动添加防火墙规则允许90111端口的入站和出站通信(参考防火墙设置  32 )。 企业网络中可能存在硬件防火墙或交换机配置限制广播包转发,需检查交换机是否开启广播过滤功能。 安全软件干扰 部分杀毒软件(如360、火绒)可能拦截UDP广播流量,建议暂时关闭防护软件测试。  三、网络环境与代码实现问题 广播地址使用不当  确保代码中发送目标地址为局域网广播地址(如255.255.255.255或子网定向广播地址,如192.168.1.255)。 避免绑定到特定网卡IP,建议绑定到0.0.0.0(所有网卡)。 多网卡干扰 若电脑存在多个活跃网卡(如WiFi和有线网卡、虚拟机网卡),广播包可能仅通过其中一个网卡发送。需在代码中指定广播网卡或禁用无关网卡。
作者: xlsqwg    时间: 2025-5-31 19:44

遇到局域网广播消息部分电脑无法接收的问题,通常与网络配置、系统设置或代码实现有关。以下是详细的排查步骤和解决方案:




一、核心排查步骤


1. 检查基础网络配置



2. 验证广播地址是否正确



3. 关闭防火墙临时测试



4. 检查系统广播限制



5. 路由器/交换机配置





二、易语言代码优化建议


1. 发送端代码示例


.版本 2
.支持库 sock

.子程序 发送广播
.局部变量 套接字, 整数型
.局部变量 广播地址, 文本型
.局部变量 发送内容, 文本型

套接字 = 创建套接字 (#AF_INET, #SOCK_DGRAM, #IPPROTO_UDP)
' 设置广播权限
置套接字选项 (套接字, #SOL_SOCKET, #SO_BROADCAST, 真)
' 计算广播地址(假设子网是192.168.1.0/24)
广播地址 = "192.168.1.255"
发送内容 = "这是测试广播消息"
发送数据报 (套接字, 发送内容, 取文本长度 (发送内容), 90111, 广播地址)

2. 接收端代码示例


.版本 2
.支持库 sock

.子程序 __启动窗口_创建完毕
.局部变量 套接字, 整数型

套接字 = 创建套接字 (#AF_INET, #SOCK_DGRAM, #IPPROTO_UDP)
绑定 (套接字, 90111, "0.0.0.0")  ' 监听所有网卡
时钟1.时钟周期 = 1000  ' 每秒检查一次

.子程序 时钟1_周期事件
.局部变量 数据, 文本型
.局部变量 来源IP, 文本型
.局部变量 来源端口, 整数型

数据 = 接收数据报 (套接字, 来源IP, 来源端口)
如果真 (数据 ≠ "")
    编辑框1.加入文本 (数据 + #换行符)



三、高级调试技巧




  1. 抓包分析

    在接收异常的电脑上使用Wireshark抓包,过滤UDP端口90111:


    udp.port == 90111


    • 如果能看到广播包但程序未接收 → 系统或代码问题

    • 如果完全无广播包 → 网络设备阻拦




  2. 检查网卡混杂模式

    部分无线网卡默认过滤广播包,尝试:


    netsh interface set interface "WiFi" admin=disable
    netsh interface set interface "WiFi" admin=enable



  3. 更换测试端口

    尝试改用更常见的广播端口(如20000-30000范围),避免与系统服务冲突。






四、企业网络特殊处理


如果是在公司/学校网络:



  1. 联系IT部门确认是否有广播隔离(如Port Security、PVLAN)

  2. 改用组播(Multicast)替代广播:
    组播地址 = "224.0.0.100"  ' 224.0.0.0~239.255.255.255
    加入组播组 (套接字, 组播地址)




最终解决方案建议



  1. 优先检查防火墙广播地址(90%问题由此导致)

  2. 在代码中添加错误日志,记录发送/接收状态

  3. 对于顽固问题,改用TCP点对点通信+自建服务发现机制


如果仍有问题,可以提供以下信息进一步诊断:








欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4