有没有办法在Linux下制作交互式TCP/UDP服务器?

有没有办法在Linux下制作交互式TCP/UDP服务器?

我需要一些工具,例如这个(称为“TCP 测试工具”)适用于 Linux。我不需要 GUI(即 GUI/CLI——这不是那么重要),但我需要能够创建一个可以在任何端口侦听、接收发送一个原始数据(即十六进制转储) 数据。

答案1

尝试nc

man nc

数控— 任意 TCP 和 UDP 连接并监听

答案2

索卡特是一个复杂的工具,可以将几乎任何东西双向连接到几乎任何其他东西。特别是,您可以让它在端口上侦听连接,在连接时运行程序,向其发送数据,并将输出返回到套接字。例如:

socat TCP4-LISTEN:3344,reuseaddr,fork  EXEC:/tmp/runme,pty

将运行一个脚本/tmp/runme,例如:

#!/bin/bash
trap 'echo sigterm >&2;exit' TERM
echo "start" >&2
while read line
do  echo "got $line"
done

你可以在其中对数据进行任何你想做的事情,比如这里返回带有前缀“got”的数据。你可以使用以下方法测试它telnet localhost 3344

echo hi | socat - TCP4:localhost:3344

如果您需要对 udp 执行相同的操作,您可以尝试,例如:

socat UDP-RECVFROM:3344,fork  EXEC:/tmp/runme,pty

您只会收到一个数据包,但您仍然会收到任何答复。测试它,例如:

echo hi | socat - UDP-SENDTO:localhost:3344

如果您只想得到数据回显,则此功能内置于xinetd则此功能内置于 中,您只需启用回声服务。看man xinetd.conf

如果您想获取带宽统计信息,请查看网络性能工具。

答案3

sendip您可能对其网站感兴趣:http://snad.ncsl.nist.gov/ipv6/sendip.html

从网站:

问:如何处理字符串和数字参数?答:许多标头字段和数据包数据区域可以通过以下语法指定:

  • 0xXXXX - 解释为十六进制数字,转换为网络字节顺序的二进制数字。
  • 0XXXX - 解释为八进制数,转换为网络字节顺序的二进制数。
  • rN - N“随机”字节
  • zN - N nul(零)字节
  • fF - 从文件 F 的下一行读取参数
  • other - 视为文字字符串

答案4

那里是 socat v.2.0.0.b8 的补丁,使其成为可能。

相关内容