测试Socket连接的好工具是什么?

78

我正在编写一个TCP/IP客户端,需要一个“测试服务器”来方便地进行测试。它应该监听可配置的端口,当客户端连接时显示连接信息和客户端发送的内容。同时,它还应该允许我手动输入文本以发送回客户端。

它应该在Windows上运行。

通常情况下,我会使用简单但功能强大的nc.exe(别名为Unix和Windows上可用的“Netcat”),但是杀毒软件将其检测为“黑客工具”,因此我的系统管理员不希望我在工作中使用它。

有没有人使用其他工具来测试套接字连接并对其感到满意?

6个回答

106

Hercules非常棒。它是一个完全功能的TCP/UDP客户端/服务器,非常适用于调试套接字。更多细节请查看网站。


1
好工具!它确实完全符合我的需求,并且被列在大型免费软件网站(如CNET)上,因此系统管理员不应该将其视为问题。唯一的小问题是需要在专业使用时发布软件链接(请参阅许可证),但这是相当公平的。 - Name
3
Hercules很棒。唯一让我有点烦恼的是“发送”文本框的长度。它只能容纳500多个字符。如果要测试的发送数据大于这个限制,那么你需要进行多次发送。除非有其他我不知道的方法。 - lucent
链接对我来说似乎是坏的。但是如先前所述,它在免费软件页面上列出。商业许可证对于大公司中的开发人员来说可能有些棘手。 - JackGrinningCat
很好的工具,不过它缺少一些仿真错误情况的功能...比如延迟的 SYN/ACK 回复等。 - Matthias Güntert
2
我曾经为了让Hercules正常工作而烦恼不已。事实证明,TCP服务器上的发送按钮不会自动在末尾添加换行符\n,因此我的TCP客户端一直在无限期地等待消息。为此,在您的消息末尾添加<LF>即可解决问题。 - OscarVanL
显示剩余2条评论

13

netcat (nc.exe) 是正确的工具。我有一种感觉,任何能够实现你想要的功能的工具都会遇到与你的杀毒软件完全相同的问题。只需在你的杀毒软件中标记此程序为“安全”即可(如何进行操作取决于你使用的杀毒软件类型)。

当然,你还需要配置你的系统管理员以确保他知道你并没有企图做任何非法的事情......


好的,如果netcat被不良使用,它实际上可以被用作黑客工具,因为你可以轻松地将套接字重定向到一个shell并将其用作telnet服务器。如果一个工具只是在窗口中显示它接收到的内容,那么它就不会被轻易地用作黑客工具。 - Name
好主意,Name。您可以通过确保nc.exe的唯一执行文件权限是针对您的Windows用户来消除这种可能性。(我假设您担心入侵者破坏您的计算机,而不是您的系统管理员担心您尝试一些狡猾的事情!) - j_random_hacker

6

尝试使用WiresharkWebScarab,第二个更适合将数据插入到交换中(不确定Wireshark是否能够)。无论如何,它们中的一个应该能够帮助您解决问题。


如果系统管理员在催促他使用netcat,那么他对于wireshark可能会更加烦恼。 - krosenvold
2
这似乎并不完全是我要找的:WebScarac似乎只限于HTTP。Wireshark似乎允许捕获流量,但不能作为测试服务器,我无法手动为客户端输入答案。 - Name
我不确定,但我认为WebScarab已经比它最初预期的用途更加庞大了。从我使用它的方式来看,我认为它可以监控通过它所观察的端口发送的任何流量。但所有这些都是安全问题。 - One Monkey
还有一个名为SocketTester的工具。 - Gardinal

4
我会选择netcat,但由于您无法使用它,这里提供一个替代方法:netcat :)。您可以在三种语言(Python/Ruby/Perl)中找到实现的netcat。您只需要安装所选语言的解释器即可。当然,这不会被视为黑客工具。
以下是链接:

Perl 实现

Python 实现

Ruby 实现


1
如果它能正常工作的话,那就太理想了。我测试了三个版本,但都出现了错误信息。Perl 版本至少部分可用。这些脚本是在 Unix 上编写的,可能在 Windows 上存在一些小问题吗? - Name
我会尝试它们,然后回来发表评论。你能指定你运行脚本时使用的参数吗? - Geo
一个服务器:-l -p 9988 还有一个客户端:-c -r localhost -p 9988 - Name
1
我尝试在Linux上运行Python脚本,但是它没有工作。 - Geo
顶一下。有人已经让这个工作了吗? - byxor

2
另一个工具是tcpmon。这是一个Java开源工具,用于监视TCP连接。它不是直接的测试服务器。它被放置在客户端和服务器之间,但允许查看通过“管道”传输的内容,并更改正在传输的内容。

2
在这种情况下,为什么不自己写一个呢?如果你知道该如何操作,测试连接的简单服务器应用程序只需要几分钟就可以完成,并且你可以使其按照你的需求做出特定的响应,以适应不同场景。

2
因为这样你就需要调试一个客户端和一个服务器,而不仅仅是一个客户端!而且为什么要编写一款已经有其他软件可以很好完成的任务的软件呢? - Name
1
因为在这个过程中你会学到一些东西。 - Aaron Hinni

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