Socket不能选择本地IP连接吗?

现在碰到一个刺手的问题,是这样的!
我的客户端要通过socket与服务器端进行通信,可是客户端服务器上是双ip地址(比方是192.168.1.10和192.168.1.20),可是 服务器端只允许192.168.1.20进行通信,进行了ip限制,在客户端上192.168.1.10是主ip,192.168.1.20是从ip,如 果我简单通过socket建立连接,程序默认会以192.168.1.10进行通信,这样服务器端会拒绝,我应该如果写才能够解决这个问题呢?

不要手动,要用程序自动实现 ,可以绑定本地的任何IP地址。

如本机IP地址为:

192.168.1.205,192.168.1.204,192.168.1.203

实现结果为:

C:\>netstat -an | find "59.39.71.94"
  TCP    192.168.1.205:2302   59.39.71.94:80         ESTABLISHED

  C:\>netstat -an | find "59.39.71.94"
  TCP    192.168.1.203:12302   59.39.71.94:80         ESTABLISHED

  C:\>netstat -an | find "59.39.71.94"
  TCP    192.168.1.204:7802   59.39.71.94:80         ESTABLISHED 

方便的话给个代码吧!谢谢!

 1  string  serverIp  =   " 59.39.71.94 " ;
 2  int  serverProt  =   80 ;
 3  string  clientIp  =   " 192.168.1.104 " ;
 4  int  clientProt  =   8012 ;
 5 
 6  var socket  =   new  Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 7  var ipHostEntry  =  Dns.GetHostEntry(serverIp);
 8  var ipEndPoint  =   new  IPEndPoint(ipHostEntry.AddressList[ 0 ], serverProt);
 9  var address  =  IPAddress.Parse(clientIp);
10  if  (address  !=   null )
11  {
12  var localEp  =   new  IPEndPoint(address, clientProt);
13  socket.Bind(localEp);
14  }
15  socket.Connect(ipEndPoint);  // 建立长连接 

以上代码就可以完全实现上面的功能。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值