testing - 如何测试 TCP 服务器实现?

标签 testing tcp tcplistener tcpserver

我已经编写了一个 TCP 服务器实现,我使用它创建了一个用作 TCP 回显服务的应用程序。

现在我想测试这个回声服务器

  • 它可以处理多少个连接
  • 响应时间是多少
  • 它使用了多少内存和 CPU

请您推荐任何标准方法/工具来测试此回显服务器。我知道 TCP 和回显服务器实现都是相当标准的做法,所以我希望找到成熟的工具来测试它。

P.S.:我可以编写自己的测试应用程序,但我不想这样做,因为如果我看到一些问题,我需要确定是我的服务器做错了。我不想先结束测试我的测试客户端。

我使用 C# 和 .NET 3.5 编写了这个实现,但我认为这与问题无关。

最佳答案

我有一个免费工具可以帮到你。我用它来测试用我的 C++ 服务器框架构建的服务器。该工具可在此处获得:http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html .它允许您以可配置的速率创建可配置数量的到目标服务器的连接,然后在每个连接上发送数据(再次以可配置的速率)。

如果发现使用它的最佳方法是在与服务器不同的机器上运行它(我知道这很明显,但是......)并且可能在多台不同的机器上运行多个副本。请注意,如果您发现无法建立超过 4000 个连接,那么您很可能需要调整运行客户端的计算机上的 MAX_USER_PORT 注册表设置。

一旦您测试了您的 TCP 代码,您可能会发现您需要测试您的服务器支持的协议(protocol)。我用 C# 为这种情况编写了一个测试工具,可在 CodeProject ( http://www.codeproject.com/KB/IP/testingsocketservers.aspx ) 上找到。这允许您编写一个“插件”来支持您的协议(protocol)并为您处理与协议(protocol)无关的内容(大量连接、分解消息以便您获得碎片化的读取等)。该设计是一个相当讨厌的每个连接线程设计,对于更多数量的连接,您最好使用异步设计重新实现一些东西,但我有我的 C++ 工具,所以我从来没有想过改变这个测试程序。 .

关于testing - 如何测试 TCP 服务器实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824773/

相关文章:

testing - 检查点是否位于凸四边形内或凸四边形上的最有效方法

c - 在调用 connect() 之前,我能知道我将使用哪个端口号吗?

java - 读取时连接重置()

C# 和 TCP 客户端(异步)具有非常高的 CPU 负载以及如何检测断开连接的客户端?

c# - 我无法连接以测试使用 TcpListener 启动的本地服务器

用于测试的 REST 监听工具

session - 我如何从测试内部销毁 CakePHP session ?

xml - 如何从 XSD 模式生成一组测试 XML 数据文件?

Linux 上的 PHP 套接字 - 在通过命令退出 php 之后/当 php 退出时立即释放 tcp 端口?

c# - 为什么 TcpListener 没有实现 IDisposable