因为某些需求,我们需要在网络中发送UDP广播,下面给出windows下UDP发送广播数据代码. UDP广播地址为255.255.255.255 关键字: setsockopt, SO_BROADCAST, UDP广播地址 通过setsockopt这个API设置一个socket为广播socket //////////////////////////////////////////////////////////////////////////////////////// setsockopt说明: 设置套接口的选项。 #include <winsock.h> int PASCAL FAR setsockopt( SOCKET s, int level, int optname, const char FAR* optval, int optlen); s:标识一个套接口的描述字。 level:选项定义的层次;目前仅支持SOL_SOCKET和IPPROTO_TCP层次。 optname:需设置的选项。 optval:指针,指向存放选项值的缓冲区。 optlen:optval缓冲区的长度。 ///////////////////////////////////////////////////////////////////////////////////////// ///代码示例 SOCKET sock; BOOL bBroadcast = TRUE; char szBroadcast[] = "this is broadcast data!"; SOCKADDR_IN sockAddr; // create udp socket sock = WSASocket(AF_INET, SOCK_DGRAM/*UDP*/, 0, NULL, 0, WSA_FLAG_OVERLAPPED); // set udp broadcast optional setsockopt(sock, SOL_SOCKET, SO_BROADCAST/* broadcast data */, (char*)&bBroadcast, sizeof(BOOL)); // initial SOCKADDR_IN sockAddr.sin_family = AF_INET; sockAddr.sin_addr.s_addr = inet_addr(INADDR_BROADCAST); sockAddr.sin_port = htons(8080); // broadcast port sendto(sock, szBroadcast, strlen(szBroadcast), 0, (SOCKADDR*)&sockAddr, sizeof(sockAddr));

评论