java多网卡组播,多网卡 组播

场景:多网卡组播有关问题

多网卡组播问题

应该是老问题了。但是在网上搜索了4天,看见的方法都试过了,问题仍然存在。郁闷啊~

机器中有两个网卡。Ip分别是

192.168.20.105

192.168.241.1

后两个是vmware虚拟机的虚拟网卡。

组播时已经绑定了输出网卡是第一个网卡的IP。但用wireshark查看每次都是用第二个网卡发送出去。

一怒之下,把bind,接收,发送的ip全改成第一个ip,情况仍然不变。

操作系统是win7。但觉得跟win7关系不大。

代码如下:

if (!soap_valid_socket(soap_bind(&wsdd_soap, "192.168.20.105", DISCOVERY_PORT, 100))) {

printf("Create discover soap fail \n");

return -1;

}

printf("bind ip address is %s \n", inet_ntoa(wsdd_soap.peer.sin_addr));  //显示192.168.20.105,表明ip已写入成功。

ret = setsockopt(wsdd_soap.master, SOL_SOCKET, SO_REUSEADDR, (char*)&sock_opt, sizeof(sock_opt));

if (ret 

printf("Failed to set the socket option\n");

return -1;

}

mcast.imr_multiaddr.s_addr = inet_addr(IPV4_MULTICAST_ADDRESS);

mcast.imr_interface.s_addr = inet_addr("192.168.20.105); // 绑定接收信息的IP

ret = setsockopt(wsdd_soap.master, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mcast, sizeof(mcast));

if (ret 

result = WSAGetLastError();

printf("Failed to add broadcast group! code: %d\n", result);

return -1;

}

struct in_addr if_req;

if_req.s_addr = inet_addr("192.168.20.105"); // 绑定发送信息的IP

if( setsockopt( wsdd_soap.master, IPPROTO_IP, IP_MULTICAST_IF, (char*)&if_req, sizeof(struct in_addr) ) 

perror("setsockopt:");

return -1;

}

然后就是组播信息发送了。

问题出在哪里啊?请各大虾帮忙。

或者请教我如何修改组播使用的默认网卡。

多网卡;组播;默认网卡

分享到:

------解决方案--------------------

这里有个组播的例子SNTP,你看下:

http://download.csdn.net/detail/geoff08zhang/4571358

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值