如何只发送一个UDP数据包与netcat?

我想只发送一个UDP数据包中的短值,但是运行该命令

echo -n "hello" | nc -4u localhost 8000 

我可以看到服务器得到你好的东西,但我不得不按Ctrl + C退出netcat命令。

发送问候后如何退出?


对不起,对于噪音,我重新阅读手册页,并find了-q选项。

  echo -n "hello" | nc -4u -q1 localhost 8000 

作品(1秒后退出)。

出于某种原因,它不适用于-q0

如果你使用bash,那么你也可以写下来

 echo -n "hello" >/dev/udp/localhost/8000 

并避免netcat的所有特性和不兼容性。

这也可以发送给其他主机,例如:

 echo -n "hello" >/dev/udp/remotehost/8000 

这些不是文件系统上的“真实”设备,而是“特殊” 别名 。

我在netcat上找不到-q1选项。 相反,我使用了-w1选项。 下面是我做的发送udp数据包到任何主机和端口的bash脚本:

 #!/bin/bash def_host=localhost def_port=43211 HOST=${2:-$def_host} PORT=${3:-$def_port} echo -n "$1" | nc -4u -w1 $HOST $PORT 

Netcat每个换行发送一个数据包。 所以你很好。 如果你做更复杂的事情,那么你可能需要别的东西。

当我意识到这一点的时候,我正在与Wireshark鬼混。 不知道是否有帮助。

在当前的netcat(v0.7.1)上,您有一个-c开关:

 -c, --close close connection on EOF from stdin 

因此,

 echo "hi" | nc -cu localhost 8000 

应该做的伎俩。