使用C#模拟TCP/IP连接

6

我是一位网络小白,请您以极其简单易懂的方式解释(似乎每当涉及网络相关的事情时,人们就开始使用完全不同的语言)。我是一名经验丰富的 C# 程序员,但在机器之间的通信方面缺乏一些技能。

情景是这样的:我正在使用一款通过 TCP/IP 与其他设备通信的产品。是否可能制作一个仿真程序,它像 TCP/IP 连接一样运行(在我的本地计算机上),以便我可以通过设置 IP 地址(和端口)将我的其他程序连接到它,并返回任何模拟/测试数据?

4个回答

0

是的:您可以设置TCP连接到在您自己的计算机上运行的程序。您应该使用的主机名是localhost,或者IP地址是127.0.0.1:另请参见Loopback (Virtual Network Interface)


0

0
说实话,我不明白这里“模拟”的意义何在,只需使用正确的TCP/IP连接即可,因为很显然你可以在同一IP上的两个不同应用程序之间通过TCP/IP发送数据。
看看这个例子:

http://www.codeproject.com/KB/IP/tcpclientserver.aspx


可能是@erikric无法运行与其尝试通信的远程系统的本地实例,因此为了开发目的,他基本上正在尝试模拟(“mock”)他所提到的设备应该返回的响应。 - Stuart Davies
是的,但他确切地说他使用本地机器进行开发,所以我无法想象设置本地“发送方”和本地“接收方”会有什么问题。 他甚至可以修改他的hosts文件,将对真实服务器IP的调用重新映射到他的127.0.0.1实例。 - Piotr Rochala
1
我不确定我理解@rochal的意思,但我怀疑我们可能对他所问的问题有不同的解释。我从这个方向来处理,即OP没有考虑模拟连接本身,只是返回模拟远程设备连接的数据,并且他的意图是开发一个服务器进程,在与客户端进程相同的机器上本地运行。不过我可能错了 :) - Stuart Davies
很棒的例子,正是我所需要的 :) - erikric

0

我之前已经做过这件事了。我创建了一组用于模拟各种技术的工具,您可以在以下链接下载:

http://www.codeproject.com/KB/biztalk/Excellence.aspx

这允许您设置要发送和接收的数据。您可能需要进行一些微调,但主要内容已经存在。

我相信您对 TcpReceiveMiniServer 感兴趣。

这是一个迷你示例:

    static void Main(string[] args)
    {
        TcpReceiveMiniServer server = new TcpReceiveMiniServer(8789);
        server.Start();
        server.DataArrived += new TcpReceiveMiniServer.DataArrivedHandler(server_DataArrived);
        Console.Read();
    }

    static void server_DataArrived(object sender, DataArrivedEventArgs e)
    {
        // do something with e.Data
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接