Windows 7中的UDP广播 – 它有用吗?
发布时间:2020-12-13 20:34:38 所属栏目:Windows 来源:网络整理
导读:我正在尝试在Windows 7下编写一些代码,以便通过我的本地网络进行广播,并且无法获得以下代码.我来自Linux背景,所以对风格道歉 – 完整的代码编译等工作,如果我使用的地址: unsigned long broadcastAddr = inet_addr("192.168.10.0") | ~(inet_addr("255.255.
我正在尝试在Windows 7下编写一些代码,以便通过我的本地网络进行广播,并且无法获得以下代码.我来自Linux背景,所以对风格道歉 – 完整的代码编译等工作,如果我使用的地址:
unsigned long broadcastAddr = inet_addr("192.168.10.0") | ~(inet_addr("255.255.240.0")); 然后工作正常,我只是想使用首选的INADDR_BROADCAST / 255.255.255.255方法. <snip> SOCKET sockfd; int broadcast = 1; WSADATA wsaData; // Windows socket // Initialize Winsock if (WSAStartup(MAKEWORD(2,2),&wsaData) == SOCKET_ERROR) { perror("WinSock Error"); getc(stdin); exit(EXIT_FAILURE); } if ((sockfd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) == -1) { perror("Socket Error"); getc(stdin); exit(1); } if ((setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,(char *)&broadcast,sizeof(broadcast))) == SOCKET_ERROR) { perror("Setsockopt - SOL_SOCKET"); getc(stdin); exit(1); } struct sockaddr_in recvaddr; recvaddr.sin_family = AF_INET; recvaddr.sin_port = htons(PORT); recvaddr.sin_addr.s_addr = htonl(INADDR_BROADCAST); memset(recvaddr.sin_zero,' ',sizeof(recvaddr.sin_zero)); int numbytes = 0; while ((numbytes = sendto(sockfd,greet,strlen(greet),MSG_DONTROUTE,(struct sockaddr *)&recvaddr,sizeof(struct sockaddr_in))) != -1) { printf("Sent a packet %dn",numbytes); Sleep(100); }
Windows 7中存在一个用于UDP广播的巨大错误,这使得255.255.255.255上的广播无法在大多数Windows 7上安装:
https://serverfault.com/questions/72112/how-to-alter-the-global-broadcast-address-255-255-255-255-behavior-on-windows
基本上它只会在单个网络接口上发送广播,这可能是任何东西,甚至类似于VM网络接口或蓝牙接口,最终可能不会向任何设备广播. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows API一日一练 88 EnumProcesses函数
- emwin如何在windows10下vs2015或2017进行仿真。
- windows-server-2008-r2 – 在任务计划程序库中仅禁用一个任
- 如何使用selenium webdriver处理Windows文件浏览窗口
- wmi – 在Win8上发现并启用/禁用设备?
- windows – AutoHotkey将韩文键重新映射到Ctrl
- Windows中当前目录和工作目录之间的区别
- 项目管理 – XP vs传统的良好项目管理
- windows-7 – 通过Citrix从终端服务/远程桌面启用多显示器支
- windows-ce – Windows CE的廉价开发板