我想在UDP数据包中只发送一个短值,但运行命令
echo -n "hello" | nc -4u localhost 8000
我可以看到服务器正在获取 hello ,但我必须按 Ctrl + c 才能退出netcat命令。
如何在发送 hello 后退出?
对不起,对于噪音,我重新阅读了手册页,找到了-q
选项。
echo -n "hello" | nc -4u -q1 localhost 8000
有效(1秒后退出)。
由于某种原因,它不适用于-q0
。
答案 0 :(得分:173)
如果你正在使用bash,你也可以写
echo -n "hello" >/dev/udp/localhost/8000
并避免netcat的所有特性和不兼容性。
这也适用于发送给其他主机,例如:
echo -n "hello" >/dev/udp/remotehost/8000
这些不是文件系统上的“真实”设备,而是bash“special”aliases。
答案 1 :(得分:46)
我在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
答案 2 :(得分:8)
在当前的netcat(v0.7.1)上,你有一个-c开关:
-c, --close close connection on EOF from stdin
因此,
echo "hi" | nc -cu localhost 8000
应该这样做。
答案 3 :(得分:5)
Netcat每个换行发送一个数据包。所以你很好。如果你做了更复杂的事情,那么你可能还需要别的东西。
当我意识到这一点时,我正在和Wireshark鬼混。不知道它是否有帮助。
答案 4 :(得分:3)
我遇到了同样的问题,但是我使用fb://faceweb/f?href=https%3A%2F%2Fm.facebook.com%2Fsharer.php%3Fu%3Dhttp%3A%2F%2Fwww.google.com
fb://faceweb/f?href={{urlencoded sharer.php url}}
选项仅发送一个数据包并退出。
您应该使用以下命令:
-w 0