是否可以将任意ip地址设置为tcpClient?

时间:2015-04-06 13:11:41

标签: c# networking tcp tcpclient tcplistener

我有一个诊断程序来处理硬件设备网络。互连基于TCP协议。 诊断程序是服务器并使用 TcpListener 来监听连接,硬件充当连接到服务器并传输数据的客户端。 诊断程序和硬件设备的IP地址是预定义的,必须保持不变,诊断程序只等待预定义的硬件IP地址。
诊断程序的IP地址为192.168.1.11,硬件设备为 - 192.168.1.200,192.168.1.201等。

+--------------+     +---------------+  
| [server]     |<--->| [hw client1]  |  
|              |     | 192.168.1.200 |  
| diagnostic   |     +---------------+  
| program      |     +---------------+  
| 192.168.1.11 |<--->| [hw client2]  |  
+--------------+     | 192.168.1.201 |  
                     +---------------+  

硬件目前实现了内部协议的一部分,诊断程序正常工作。我想改进诊断程序并在没有硬件设备的情况下实现内部协议的下一部分(其软件尚未准备好)。为此,我想实现软件模拟器作为硬件。我的计划是创建 tcpClient ,它实现了诊断程序与硬件设备之间交互所使用的内部协议。 问题是我无法将任意ip地址设置为 tcpClient 。我只能通过 localhost 工作 是否可以创建将使用所需IP地址实现 tcpClient 的程序(例如192.168.1.200)?

3 个答案:

答案 0 :(得分:1)

您需要使用DHCP地址切换NIC。

IPV4 Properites

然后打开高级设置并添加第二个IP地址。

Advanced TCP/IP Settings

答案 1 :(得分:0)

首先,让我们制作一个更详细的图表版本。

enter image description here

而不是伪造TcpClient所说的IP地址,而不是假冒TcpClient。

所以基本上你的程序会转入。

enter image description here

这与使用&#34; Mock&#34;单元测试时。您需要做的就是创建一个主逻辑与之交谈的接口,包含TCP通信,当与真实硬件交谈时,它会转到真正的客户端类对象,当与您的模拟器通信时,它会与您的模拟器类进行通信相同的界面。

答案 2 :(得分:0)

我有另一种方法 我想要的解决方案不会以任何方式影响我的诊断程序 我使用虚拟机(通过 virtualbox )。主要问题是正确设置主机和玻璃机器的IP地址。主机是192.168.1.11,在虚拟机内 - 192.168.1.200 因此,诊断程序不变,客户端在虚拟机上运行。