社区
网络编程
帖子详情
求助高手,如何使用双网卡进行UDP多播?
chxywm
2005-07-23 01:36:53
局域网中每台机器都有两块网卡,如何指定网卡进行通信呢?(UDP多播)
经实验发现系统总是选择默认的那个网卡发送数据包,而另一个网卡闲着,如何能让两块网卡分工呢?请高手们帮忙解答!!
...全文
841
9
打赏
收藏
求助高手,如何使用双网卡进行UDP多播?
局域网中每台机器都有两块网卡,如何指定网卡进行通信呢?(UDP多播) 经实验发现系统总是选择默认的那个网卡发送数据包,而另一个网卡闲着,如何能让两块网卡分工呢?请高手们帮忙解答!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alexmayer
2005-12-17
打赏
举报
回复
关注!
huyansoft
2005-09-20
打赏
举报
回复
void main()
{
//初始化Winsock
WSADATA wsadata;
int ret=WSAStartup(WAVERS,&wsadata);
if(ret!=0) Error("initialize winsock error");
char* multiaddr="234.5.6.7";//多播组地址
char* localaddr="192.168.1.88";
//创建UDP类型套接字
SOCKET sock=socket(AF_INET,SOCK_DGRAM,0);
//使套接字监听本地端口
sockaddr_in local;
local.sin_family=AF_INET;
local.sin_port=htons(3333);
local.sin_addr.s_addr=htonl(INADDR_ANY);//不须具体指定IP
ret=bind(sock,(sockaddr*)&local,sizeof(local));
if(ret==SOCKET_ERROR) Error("bind error");
//加入多播组
ip_mreq ipmr;
ipmr.imr_multiaddr.s_addr=inet_addr(multiaddr);
ipmr.imr_interface.s_addr=inet_addr(localaddr);//因本机有两个网卡(两个IP),其中只有一个能收到多播数据,这里指定是哪一个
ret=setsockopt(sock,IPPROTO_IP,IP_ADD_MEMBERSHIP,(char*)&ipmr,sizeof(ipmr));
if(ret==SOCKET_ERROR) Error("setsockopt error");
//接收数据
char buf[256];
sockaddr_in from;
int len=sizeof(from);
while(true)
{
ret=recvfrom(sock,buf,256,0,(sockaddr*)&from,&len);
if(ret==0)
Error("recv len=0");
else if(ret==SOCKET_ERROR)
Error("recvfrom error");
else
{
buf[ret]='\0';
printf("%s[%d]发来:%s\n",inet_ntoa(from.sin_addr),ntohs(from.sin_port),buf);
}
}
//离开多播组
setsockopt(sock,IPPROTO_IP,IP_DROP_MEMBERSHIP,(char*)&ipmr,sizeof(ipmr));
//关闭套接字
closesocket(sock);
}
菲斯可儿
2005-07-26
打赏
举报
回复
可以枚举网卡的吧?
rotus
2005-07-25
打赏
举报
回复
//将套接字绑定到用户指定端口及默认的接口
memset(&m_sockaddr,0,sizeof(m_sockaddr));
m_sockaddr.sin_family=AF_INET;
m_sockaddr.sin_port=htons((USHORT)m_nPort);
m_sockaddr.sin_addr.s_addr= inet_addr( m_strLocalIP );//htonl(INADDR_ANY);//
bind(m_hSocket,(struct sockaddr FAR *)&m_sockaddr,sizeof(m_sockaddr));
AntonlioX
2005-07-23
打赏
举报
回复
帮 up
oyljerry
2005-07-23
打赏
举报
回复
指定网卡IP地址来
xlzxlich
2005-07-23
打赏
举报
回复
MulticastIp.imr_interface.s_addr = mdLocalIP;//网卡的IP地址
xlzxlich
2005-07-23
打赏
举报
回复
struct ip_mreq MulticastIp;
// Setup the im_req structure to indicate what group we want to join as well as the interface
//MulticastIp.imr_interface.s_addr =INADDR_ANY;
MulticastIp.imr_interface.s_addr =IPPROTO_IP;
MulticastIp.imr_multiaddr.s_addr =dwMulticastGroup;
if(!SetSockOpt(IP_ADD_MEMBERSHIP, (char *)&MulticastIp, sizeof(MulticastIp), IPPROTO_IP))
{
int err = WSAGetLastError();
sprintf(text, "setsockopt(IP_ADD_MEMBERSHIP) Error !(%d)", err);
MessageBox(NULL, text, "Error", 0);
return(-err);
}
chxywm
2005-07-23
打赏
举报
回复
绑定IP肯定是不行的,跟绑定网卡是两码事,我试试xlzxlich(阳光)的方法
Qt利用Q
Udp
Socket实现
双网卡
通信:提升网络通信效率的利器
该项目利用Qt的Q
Udp
Socket类实现
双网卡
通信,包含示例代码助开发者掌握技术。Q
Udp
Socket支持无连接数据包通信,通过
多播
广播、网络接口绑定等实现
双网卡
通信。适用于多机通信、实时视频传输、网络游戏等场景,具有简单实用、可定制、安全等特点。
linux下
双网卡
接收组播需要修改的参数
本文探讨了在Linux系统中遇到的一个关于
多播
接收的问题,特别是在
双网卡
环境下Fedora13及其后续版本中出现的接收失败现象。文章详细解释了rp_filter的工作原理,并给出了禁用rp_filter的方法。
Java
UDP
广播、组播
使用
--系列2-多网卡监听问题
本文档描述了在多网卡环境中,
多播
服务偶尔无法接收到客户端发送的
多播
信息的问题。问题分析表明,
多播
服务可能仅监听了默认网卡,导致无法接收来自其他网卡的
多播
消息。为解决此问题,服务端通过修改代码,让
多播
服务监听所有有效网卡,并提供了一个示例代码片段展示如何实现。经过验证,修改后的代码使得有线和无线网卡都能成功加入
多播
组,问题得到解决。
linux多网卡 组播接收,rp_filter及Linux下多网卡接收
多播
的问题
探讨Fedora13系统中出现的
多播
接收问题,分析rp_filter机制导致的IGMPQuery响应缺失,并提供了解决方案。
双网卡
或多网卡组播 (ZT)
本文介绍组播技术的基本原理,包括D类IP地址的作用及其在网络通信中的应用。文章提供了一个
UDP
组播发送与接收的示例程序,展示了如何通过编程实现组播功能。
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章