我想在 UDP 数据包中只发送一个短值,但运行命令
echo -n "hello" | nc -4u localhost 8000
我可以看到服务器正在获取hello内容,但我必须按Ctrl+c退出 netcat 命令。
发送hello后如何让它退出?
抱歉,由于噪音,我重新阅读了手册页并找到了该-q
选项。
echo -n "hello" | nc -4u -q1 localhost 8000
工作(它在 1 秒后退出)。
出于某种原因,它不适用于-q0
.
我没有-q1
在我的 netcat 上找到该选项。相反,我使用了该-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 (v0.7.1) 上,您有一个 -c 开关:
-c, --close close connection on EOF from stdin
因此,
echo "hi" | nc -cu localhost 8000
应该做的伎俩。
我有同样的问题,但我使用-w 0
选项只发送一个数据包并退出。你应该使用这个命令:
echo -n "hello" | nc -4u -w0 localhost 8000
Netcat 每个换行发送一个数据包。所以你没事。如果你做任何更复杂的事情,那么你可能需要别的东西。
当我意识到这一点时,我正在和 Wireshark 胡闹。不知道有没有帮助。