因为某些需求,我们需要在网络中发送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));
评论