多网卡如何知道UDP多播包是从哪个网卡收到的

seemknow 2014-08-28 10:10:09
我目前了解的,如果udp双方在同一网段,recvfrom得到发方地址,对比本机地址,可以知道相应网卡。
问题是,A有多个网卡,B可能有多个网卡。A、B间的一对连接不是同一网段,A接收B的多播(组播),如何定位是哪个网卡进来的?
比如B发送多播目的地址是224.0.0.1,port=6000。A的192.168.1.1网卡与B的192.168.2.2网络连接。
为了接收多播,A绑定到socket。

memset(&serveraddress, 0, sizeof(serveraddress));
serveraddress.sin_family = AF_INET;
serveraddress.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddress.sin_port = htons(6000);
if(bind(client_socket, (struct sockaddr *)&serveraddress, sizeof(serveraddress)) < 0)
{
perror("bind");
return 0;
}

A可以收到192.168.2.2的多播包。
想在A给出提示“网卡x(ethx)收到发方2.2”。如何知道这个x?
...全文
286 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
alofm 2014-08-28
  • 打赏
  • 举报
回复
通过recvfrom获取到发送端IP和接收端IP,然后去/etc/sysconfig/network/下去枚举网卡信息。

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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