使用 netcat 将文本文件内容发送到服务器?

使用 netcat 将文本文件内容发送到服务器?

有一个守护进程在监听端口 5144,我无法修改它。

我想使用 netcat 将文本文件的内容发送到服务器,但这会导致netcat终端挂起,直到我按下Ctrl+ C

cat file.txt | nc -u 127.0.0.1 5144

我能够使其工作的唯一方法是手动运行nc -u 127.0.0.1 5144并复制/粘贴文件的内容。

有任何想法吗?


另请注意:

  1. cat file.txt | ...导致bash: ...: command not found我可以继续使用终端
  2. 使用nc -u 127.0.0.1 5144 < file.txt会导致与使用上面的 | 相同的行为

答案1

如果您使用的是 GNU 版本的 netcat,那么您可以使用 -c 标志在 EOF 上关闭连接。

-c, --close 在 EOF 时从 stdin 关闭连接

如果您正在使用该工具的原始版本,那么您可以使用 -q 标志。

-q secs 在标准输入的 EOF 之后退出并延迟 secs

原始版本的一个例子是:

cat file.txt | nc -u -q 0 127.0.0.1 5144

我已将“-q 0”添加到您的原始命令中。这将在文件发送后关闭连接。

答案2

假设发送 EOF 后连接将保持空闲状态,您可以使用-w timeout选项,该选项timeout适用于等于零(与愚蠢的-q选项不同......)

cat file.text | nc -u localhost 4300 -w0

答案3

如果您要从 FreeBSD 转移到 Windows:

FreeBSD的:cat file.txt | nc -N 10.0.0.5 5144

-N将在 EOF 后关闭网络套接字

视窗:nc -l -p 5144 > output.txt

-l连接关闭时将停止监听(不同于-L

相关内容