双网卡连接不同局域网,如何向两个网卡(局域网)同时发送广播,并对两个网络中机器的回复进行应答?如果以上方案不好实现,能否查出本机上有几个网卡和它们的IP地址,起码可以让用户可以选择使用哪张网卡进行通讯?对双网卡机制和多网卡下使用SOCKET不是很了解,希望大家能帮帮忙,如果能说明下大概原理最好,非常感谢!

解决方案 »

  1.   

    在每个客户端里都放个windows服务,用于传本机ip到服务器,服务器里建一个列表,用于存放IP地址。每次要发消息到客户端时直接循环一下就行了,通过哪个网卡是不必考虑的,机器自己就会选择。客户端回复消息也是同理,获取了客户端IP自然就能应答。
      

  2.   

    http://www.codeproject.com/cs/internet/multicast.asp
      

  3.   

    TO:wzd24(牧野)
    感谢你的回答,不过我说说我的理解,我查过MSDN里面的Socket.Bind 方法:
    ——————————————————————————————————————
    如果您不介意分配哪个本地地址,则可以用 IPAddress.Any 作为地址参数创建一个 IPEndPoint,这样,基础服务提供程序将会分配最适合的网络地址。如果您有多个网络接口,这将有助于简化您的应用程序。
    ——————————————————————————————————————
    就我的理解,使用IPAddress.Any 的话,应该是在多个网卡中分配一个发送,而不是两个网卡(局域网)同时发送,实际测试也没有成功,是否是我的设置有问题呢?TO:alldj(灵山妖姬) 
    感谢你的方案,不过我手头上的项目已经不可能做如此大的修改了,还是希望能找到一个服务器端就能解决的方案TO:jiangsheng(蒋晟.Net[MVP]) 
    是采用多路广播吗?呵呵 我对这块不大了解,我先去看看资料  非常感谢
      

  4.   

    System.Net.IPHostEntry ipHostInfo = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
    获取当前主机的所有IP地址,包括:127.0.0.1
      

  5.   

    最近两天稍微看了下资料,感觉多路广播的方式可能不适合我这个项目,个人理解多路广播是可以经过多个路由器转发的广播,但如果两个局域网络没有其他物理连接(路由器),好象就没有办法了.......或者是我的理解有问题?感谢wzd24(牧野),想再询问下,找到本机多个IP后,是不是将各个网卡IP分别绑定到不同的SOCKET发送和接收,即可实现多网卡通讯?最近上网困难,可能我的回复和给分会比较迟,希望大家见谅,感谢各位的帮忙
      

  6.   

    这样应该可以,呵呵…………
    我还以为楼主就不管了呢!其实你只要在Socket上绑定IPAddress.Any就可以向两个网络的任何一个网络广播。这样你就只要在一个Socket上对两个局域网分别广播一次,这样做的前提是两个局域网要在不同的IP段内。如:
    网络A在192.168.0.X,网络B在192.168.1.X。
    两次广播地址分别为:192.168.0.255,192.168.1.255。
    这样应该可以的!