【问题标题】:Linux tool to send raw data to a TCP server将原始数据发送到 TCP 服务器的 Linux 工具
【发布时间】:2011-03-01 22:19:54
【问题描述】:

我知道这不是一个直接的“开发”问题,但我需要此信息来测试开发项目,所以我认为有人可能会遇到类似问题。

我将测试一个运行 TCP 服务器的软件,并根据发送的命令回复一些答案。我会测试这个软件,如果它不能很好地工作,我不想写代码。所以我想发送这些命令并测试驱动服务器软件。

如何使用 Linux 机器实现这一点?

【问题讨论】:

    标签: linux tcp


    【解决方案1】:

    使用 dd 来自 bash:

    dd if=/dev/zero bs=9000 count=1000 > /dev/tcp/$target_host/$port
    

    甚至是猫:

    cat < /dev/urandom > /dev/tcp/$target_host/$port
    

    【讨论】:

    • /dev/tcp/*/* 是 bash 以特殊方式处理的特殊文件名。它实际上并不存在。
    • (echo '2' &gt; /dev/tcp/192.168.1.161/8888) &amp;&amp; (sleep 1; echo '2' &gt; /dev/tcp/192.168.1.163/8888) 为什么超过 1 个需要 5 分钟,但使用 1 个请求时不到 1 秒就完成了?
    • 虽然nc 可能是最好的工具,但这应该是公认的答案。
    • 只是一个旁注:这样,来自服务器的响应将不会显示。如果你想在屏幕上看到响应,netcat 更适合。
    【解决方案2】:

    netcattelnet,我过去都使用过这两种方法来测试基于简单文本的协议。 netcat 更灵活。

    【讨论】:

    • @YannRamin 如何使用 socat 发送 TCP 消息?我以前可以使用 socat 发送 UDP 消息,但 socat 没有 tcp-datagram。这是用于 UDP:echo "some-test-sample" | socat - UDP-DATAGRAM:localhost:43278,broadcast
    【解决方案3】:

    听起来像Expect 可能是您想要的。有多种脚本语言的实现,您可以编写请求/服务器响应以及适当的超时、错误处理等脚本。

    【讨论】:

    • 请举个例子,很少有人能正确理解多 TCP 连接的期望。我有一个问题,当我进行单连接时它可以工作,但是当它进行多连接时,它需要比正常持续时间更长的时间。请举一些例子,你怎么能用期望做到这一点? (echo '2' &gt; /dev/tcp/192.168.1.161/8888) &amp;&amp; (sleep 1; echo '2' &gt; /dev/tcp/192.168.1.163/8888)
    • 我很惊讶这被否决了,当最高投票和接受的答案建议 telnet “测试基于简单文本的协议”时
    猜你喜欢
    • 2012-04-08
    • 2023-03-23
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多