18,356
社区成员
发帖
与我相关
我的任务
分享
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(4567);
addr.sin_addr.s_addr=INADDR_BROADCAST;
SOCKET s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
if(INVALID_SOCKET==s)
{
printf("创建套接字失败\r\n");
getchar();
return -1;
}
BOOL bBroadCast=TRUE;
setsockopt(s,SOL_SOCKET,SO_BROADCAST,(const char*)&bBroadCast,sizeof(bBroadCast));
printf("开始向端口4567上发送数据\r\n");
char szBuf[]="Hello everyone!\r\n";
while(true)
{
sendto(s,szBuf,strlen(szBuf),0,(const sockaddr*)&addr,sizeof(addr));
Sleep(5000);
}
closesocket(s);
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(4567);
addr.sin_addr.s_addr=INADDR_ANY;
SOCKET s=socket(AF_INET,SOCK_DGRAM,0);
if(INVALID_SOCKET==s)
{
printf("创建套接字失败\r\n");
getchar();
return -1;
}
if(SOCKET_ERROR==bind(s,(const sockaddr*)&addr,sizeof(addr)))
{
printf("绑定套接字失败\r\n");
getchar();
return -2;
}
printf("开始在端口4567上监听数据...\r\n");
while(true)
{
char szBuf[1024];
sockaddr_in addrRemote;
int iSize=sizeof(addrRemote);
int iLen=recvfrom(s,szBuf,strlen(szBuf),0,(sockaddr*)&addrRemote,&iSize);
if(iLen!=SOCKET_ERROR)
{
szBuf[iLen]='\0';
printf("接受到广播数据:%s\r\n",szBuf);
printf("远程地址;%s 端口:%d\r\n",
inet_ntoa(addrRemote.sin_addr),ntohs(addrRemote.sin_port));
}
}
closesocket(s);