使用 Netcat 通过 UDP 进行单向通信

使用 Netcat 通过 UDP 进行单向通信

我遇到过这样的情况:许多“智能”设备通过 UDP 向我发送数据。我无法更改发送端的任何内容。

我正在测试 nc (或 netcat),但无法通过以下内容:

接收结束命令:

nc -l -u 8123

测试发送命令:

echo "test" | nc -u 127.0.0.1 8123

第一个数据包工作正常,但两端似乎都进入了某种睡眠状态,我必须CTRL再次C尝试。一旦它起作用,我将使接收端“继续监听”(-k),然后我将处理数据包

答案1

答案是,如果出现的话 - netcat 在像这样使用时显然存在一些问题 - socat 提供了一个解决方案:

收到:

socat -u udp4-recv:8123 - 

发送:

echo "test" | socat - udp4-sendto:127.0.0.1:8123

答案2

服务器端:nc -ul 127.0.0.1 1234- 监听端口 1234 上的 udp 连接

还:nc -l 1234

客户端:nc -u 127.0.0.1 1234- 使用 udp 连接到 127.0.0.1,端口 1234

现在在客户端输入一些内容,您就会在服务器端看到它。 (您也可以在服务器端键入,它会发送到客户端。)

当您这样做时echo "test" | nc -u 127.0.0.1 8123,服务器端保持像以前一样,但现在nc客户端的标准输入绑定到管道描述符。当你在键盘上打字时,它无处可去。nc正在等待来自管道的输入,并且管道已经发送了它必须发送的所有内容。所以现在nc是“冻结”了。

答案3

根据手册页,您需要传递标志-q0nc使其在完成后退出。

答案4

我试图测试一些 DNS 东西,但我缺少的是标志-d。完整命令,nc在 Ubuntu 22.04 上使用 BSD:

nc -d -l -q 0 -u 127.0.0.1 8123

添加-v用于通过 stderr 进行调试。

相关内容