请问一个有关组播端口的问题

leon7909 2006-12-04 04:02:46
最近写个东西第一次用到组播,先前以为在BIND本地端口和地址时只要随意指定一个端口号,JOIN到相应的组播组就好了,可是做起来发现实际情况不是这样,比如发送方向组播地址234.5.6.7端口50000发送消息的话,其它接收方在BIND本地接收端口的时候也必须使用50000端口才能收到消息.这样就有点麻烦了,比如现在的局域网上存在两个组播组,一个是234.5.6.7:50000,一个是234.5.6.8:50000,我在同一台机器上想要同时加入这两个组播组的话就有问题了,因为50000端口被第一个应用程式BIND后,第二个程式再要去BIND这个端口时,就会失败,请问象这样的问题要如何来解决呢?
...全文
636 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
star119119 2006-12-04
  • 打赏
  • 举报
回复
换个顺序调用
star119119 2006-12-04
  • 打赏
  • 举报
回复
BOOL flg = TRUE;

// set the socket with no block model
if ( ::ioctlsocket( m_sockUDP, FIONBIO, (unsigned long *)&flg) != 0 )
{
ShowError(WSAGetLastError());
return FALSE;
}
star119119 2006-12-04
  • 打赏
  • 举报
回复
flg = TRUE;

// allow broadcast
if ( ::setsockopt( m_sockUDP, SOL_SOCKET, SO_BROADCAST, (char *)&flg, sizeof(flg)) != 0 )
{
ShowError(WSAGetLastError());
return FALSE;
}

shenming123 2006-12-04
  • 打赏
  • 举报
回复
组播地址不一样,端口也不一样就行了。

18,356

社区成员

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

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