Windows Server 2016 收不到UDP数据

之前用得好好的UDP数据接收软件在这台新服务器上竟然收不到数据了,wireshark 能抓到数据确认数据已经到服务器:

 netstat -ano 确认程序也已经监听了对应的端口:

 这一度让我怀疑会不会是操作系统的原因,直到看到udp服务器不能接收到数据包??急!!!-CSDN论坛这个帖子的最后一个回复:

 赶紧把防火墙开了,然后可以了:

哦,原来wireshark抓到的数据是通过防火墙之前的数据,总是记不住。

UDP(用户数据报协议)广播是一种在IP网络中通过发送单播或多播包到一组指定地址的技术,但在Windows环境下,广播功能主要用于特定的应用场景,如网络发现(NetBIOS名称服务)和一些实时游戏等。然而,由于防火墙和其他安全限制,直接在Windows上创建UDP广播服务器和客户端可能会遇到挑战。 以下是基本步骤概述: 1. **开启防火墙设置**:UDP广播需要允许对本地回环地址(127.0.0.1)和组播地址(通常范围在224.0.0.0至239.255.255.255)的访问。检查并可能调整你的防火墙规则。 2. **编程示例**:使用套接字API(Winsock)可以编写UDP应用程序。下面是一个简单的例子: - 发送端(发送广播包): ```c++ #include <winsock2.h> // 创建UDP套接字 SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // 设置标志以便接收广播 setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&TRUE, sizeof(TRUE)); // 构建广播信息 struct sockaddr_in server; server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_BROADCAST); // 广播地址 server.sin_port = htons(YourPortNumber); // 目标端口 sendto(sock, buffer, length, 0, (PSOCKADDR)&server, sizeof(server)); ``` - 接收端(监听广播): ```c++ char buffer[1024]; while (true) { recvfrom(sock, buffer, sizeof(buffer), 0, NULL, NULL); // 处理接收到的数据 } ``` 3. **注意**:Windows对广播的支持有限,有些操作系统版本可能不允许或受到严格的控制。此外,由于安全性和性能原因,在生产环境中,通常推荐使用TCP/IP而不是UDP广播。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值