【问题标题】:Mocking a TCP/IP connection with C#使用 C# 模拟 TCP/IP 连接
【发布时间】:2010-09-14 08:55:10
【问题描述】:

我有点网络 n00b,所以请温柔一点,用一种非常、非常愚蠢的方式解释事情(在我看来,每次涉及网络相关的东西时,人们都会开始说一种完全不同的语言) .我是一个相当有经验的 C# 程序员,但在机器之间的通信方面缺乏一些技能。

场景是这样的:我正在使用通过 tcp/ip 与其他设备通信的产品。是否可以制作一个类似于 ta tcp/ip 连接(在我的机器上本地)的虚拟程序,所以我可以通过设置它的 IP 地址(和端口)将我的其他程序连接到它,然后让它返回任何模拟/我想要的测试数据?

【问题讨论】:

    标签: c# networking tcp


    【解决方案1】:

    老实说,我没有看到在这里“模拟”任何东西的意义,只是使用正确的 TCP/IP 连接,因为显然您可以通过 TCP/IP 在同一 IP 上的两个不同应用程序之间发送数据。

    看看这个例子:

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

    【讨论】:

    • 这可能是@erikric 无法运行他试图与之通信的远程系统的本地实例,因此出于开发目的,基本上是在模拟(“模拟”)他希望从他提到的设备中收到回复。
    • 是的,但他准确地说他使用本地机器进行开发,所以我无法想象设置本地“发送者”和本地“接收者”会成为问题的场景。他甚至可以修改 histhosts 文件,将对真实服务器 IP 的调用重新映射到他的 127.0.0.1 实例中。
    • 我不确定我是否关注@rochal,但我怀疑我们可能对他提出的问题有不同的解释。我从 OP 不考虑模拟连接本身的方向接近它,只是返回数据以模拟与远程设备的连接,他的目的是开发一个服务器进程,以便在与他的客户端相同的机器上本地运行过程。不过我可能是错的:)
    • 很好的例子,正是我需要的:)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      是的,完全有可能。看看 System.Net.Sockets.TcpClientSystem.Net.Sockets.TcpListener 类 - 它们应该是一个很好的起点。

      【讨论】:

        【解决方案4】:

        我以前做过。我创建了一组用于模拟各种技术的工具,您可以在以下位置下载:

        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
            }
        

        【讨论】:

          猜你喜欢
          • 2011-08-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-08
          • 2010-12-30
          • 2015-02-27
          • 2013-01-23
          • 2011-01-24
          • 1970-01-01
          相关资源
          最近更新 更多