很久以前在阿里云弄了一个服务器 自己写了一个exe(TcpListener)监听了一端口(9999)暂叫服务A 客户端(硬件或者自己写的tcpclient测试)就访问阿里云的IP直接发送数组 代码如下 TcpClient c = new TcpClient(); c.Connect(IPAddress.Parse("服务器IP"), 9999); c.Client.Send(数组); c.Client.Shutdown(SocketShutdown.Both); c.Client.Close(); c.Close(); 都很正常没什么问题 不过这是测试阶段,现在要交付项目结果发现一个事情. 对方给我一个2个IP(联通跟电信) 他们映射到了一个电脑上(3个网卡) 都是内网IP 现在是192.168.168.1我们叫A线路 对应外网IP假设叫X TcpListener listener = new TcpListener("192.168.168.1", 8888); 这样的话 外网只能通过X线路来访问.相反也一样 监听B线路X就无法访问. 但是我部署的网站80端口 2个线路都可以访问. 有什么方法 让我这tcp程序监听1次2个网卡同时生效? |
|
发帖子的无意间看到
IPaddress.Any 我先去测试下有没有效果…. |
|
10分 |
虽然.Net 2.0中的TcpListener(8888);这个重载被标记为过时了,但是用起来依然是可以的
|
5分 |
没看懂数据是哪里到哪里
你的程序放在服务器端的话 应该可以直接这样写 TcpListener listener = new TcpListener(“localhost”, 8888); |
实际上 我就是那个意思..不过代码可能不太一样.实际上我的代码是如下的 var sock = new Socket(myEnd.AddressFamily, SocketType.Stream, ProtocolType.Tcp); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1); IPEndPoint myEnd=new IPEndPoint(IPAddress.Parse(Host), Port); sock.Bind(myEnd); sock.Listen(20); 其中host跟port的参数..所以就照成了上面的问题..不能玩转双网卡…. |
|
2分 |
不需要关注数据是通过那个ip来的,只监听本机的端口即可 |
205分 |
IPaddress.Any
|
127.0.0.1导致2个网卡都无法监听了… 最终还是我自己1L的办法 any可以了. |