关于UDP广播的问题

cupid148 2006-04-08 10:17:27

我的接收端是这样的,,但是为什么总是接受不到信息呢?


#include <winsock2.h>
#include <stdio.h>

#define MCASTADDR "234.5.5.5" //本例使用的多播组地址。
#define MCASTPORT 5150 //绑定的本地端口号。
#define BUFSIZE 1024 //接收数据缓冲大小。

int main(int argc, char* argv[])
{
WSADATA wsd;
struct sockaddr_in local,remote,from;
SOCKET sock,sockM;
char recvbuf[BUFSIZE];

int len = sizeof( struct sockaddr_in);
int ret;

if(WSAStartup( MAKEWORD(2,2),&wsd)!= 0 )
{
printf("WSAStartup() failed\n");
return -1;
}

sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF);
if(sock== INVALID_SOCKET)
{
printf("socket failed with:%d\n",WSAGetLastError());
WSACleanup();
return -1;
}

//将sock绑定到本机某端口上。

local.sin_family = AF_INET;
local.sin_port = htons(MCASTPORT);
local.sin_addr.s_addr = INADDR_ANY;
if(bind(sock,(struct sockaddr*)&local,sizeof(local)) == SOCKET_ERROR )
{
printf( "bind failed with:%d \n",WSAGetLastError());
closesocket(sock);
WSACleanup();
return -1;
}

//加入多播组
remote.sin_family = AF_INET;
remote.sin_port = htons(MCASTPORT);
remote.sin_addr.s_addr = inet_addr( MCASTADDR );

if((sockM = WSAJoinLeaf(sock,(SOCKADDR*)&remote,sizeof(remote),NULL,NULL,NULL,NULL, JL_BOTH)) == INVALID_SOCKET)
{
printf("WSAJoinLeaf() failed:%d\n",WSAGetLastError());
closesocket(sock);
WSACleanup();
return -1;
}

//接收多播数据,当接收到的数据为"QUIT"时退出。
while(1)
{
if((ret = recvfrom(sock,recvbuf,BUFSIZE,0,(struct sockaddr*)&from,&len)) == SOCKET_ERROR)
{
printf("recvfrom failed with:%d\n",WSAGetLastError());
closesocket(sockM);
closesocket(sock);
WSACleanup();
return -1;
}
if(strcmp(recvbuf,"QUIT") == 0 ) break;
else
{
recvbuf[ret] = '\0';
printf("RECV:' %s ' FROM <%s> \n",recvbuf,inet_ntoa(from.sin_addr));
}
}
closesocket(sockM);
closesocket(sock);
WSACleanup();
return 0;
}
...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bj_lift 2006-04-11
  • 打赏
  • 举报
回复
TO:nuaawenlin(飘人)
接收端要先发送才能接收吗?
nuaawenlin 2006-04-09
  • 打赏
  • 举报
回复
没发现你使用SendTo发送信息
oyljerry 2006-04-09
  • 打赏
  • 举报
回复
看发送的是否发送成功

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧