美文网首页
双网卡指定本地IP连接方法

双网卡指定本地IP连接方法

作者: 向着远方奔跑 | 来源:发表于2019-03-14 21:29 被阅读0次

今天在演示过程中碰到一个问题,跟大家简单分享下:

问题背景:程序运行使用的工控机有两个网口,一个跟堆垛机、滚转、滚筒等设备共同引出的一条网线进行有线连接,另外一个网口跟管控中心使用无线模块连接,两个网口两个ip。

问题现象:今天打开程序运行,发现跟滚转设备通讯一直显示失败。

问题分析:正常情况下通讯应该是跟设备连接的网口就用跟设备连接的网口的IP和设备通讯,用无线模块通讯的网口就用跟无线模块连接的网口的IP和管控中心通讯,但是计算机有时可能会用无线模块的本地IP去和设备通信,这样就会显示通信失败,有点绕哈,举个例子就是有两个不同大小的杯子,一个黑色,一个白色,正常是黑色杯盖配黑色杯身,白色杯盖配白色杯身,现在黑色杯盖配白色杯身肯定是盖不上的。

解决方案:知道了问题的原因,解决方案就很明显了,我们需要在程序中指定各自本地网卡的IP去和各自的设备连接,即指定黑色杯盖配黑色杯身,白色杯盖配白色杯身。

代码展示:
使用Socket指定本地IP:

IPAddress IPLocal = IPAddress.Parse("192.168.1.12");
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Bind(new IPEndPoint(IPLocal, 0));

使用TcpClient指定本地IP:

TcpClient tcpClient = new TcpClient(new IPEndPoint(IPAddress.Parse("192.168.1.50"), 0));

备注:ip号后的端口0代表系统自动去找一个可用的端口,也可以自己指定端口。

限于掌握知识有限,有些地方理解会有偏差,欢迎各位师傅兄弟交流指正

相关文章

网友评论

      本文标题:双网卡指定本地IP连接方法

      本文链接:https://www.haomeiwen.com/subject/wkshmqtx.html