--------------------------
   ┌─┐  
   │A│  
   └┬┘  
    │  
    │  
 ┌──┴───┐  
 │Switch│  
 └─┬─┬──┘  
  甲│ │乙  
   │ │  
  ┌┴─┴┐  
  │ B │  
  └───┘  
 
-------------------  
大概网络图如上:整体网络图简化下来如上,  
大家肯定会说这样很麻烦,很不科学,但是如果看到网络的全图就不会这么说了  
 
现在我把上图解释一下:【A】为一台计算机,IP:10.10.1.20  
【B】为一台双网卡的计算机:  
甲网卡为:10.10.1.30、乙网卡:10.10.1.40  
 
三个网线连接在一台交换机上  
 
按道理三个IP属于同一个网断,可以互通  
 
问题是:  
 
我在【B】计算机上放置一个程序,去和【A】计算机进行通信  
 
程序上做相应设置后可以将数据通过【甲】网卡与【A】计算机通信;  
更改该设置后,通信数据可以通过【乙】网卡【A】计算机通信  
 
换句话说就是用程序控制数据的网卡选择。请问这个怎么实现??

解决方案 »

  1.   

    如果服务端是B,就好办了,绑定要对应的IP就可以了;
    但估计你的服务器是A,B是客户端。那就要设路由了。
    route add命令你自己去研究一下好了。
      

  2.   

    首先你这样做不是可取的,用两个网卡在同一网段进行,容易造成了网络回路(网络路径选择问题,主要是Switch如何解决).
    要用到双网卡,最可行的办法是两个网卡的IP 不在同一网段上.而通过在Switch 上面设置路由能让[乙]能路由到A就可以了
      

  3.   

    软件实现,要么,你用代码,动态的启用一张网卡,同时禁止另外一张要么,底层的socket, 可以绑定IP, 但实现比较难
      

  4.   

    IdTCPClient是可以选择从哪块网卡完成连接的, 具体属性是BoundIP。