Answers:
如果您正在使用bash,则最好写
echo -n "hello" >/dev/udp/localhost/8000
并避免netcat的所有特性和不兼容性。
这也可以发送给其他主机,例如:
echo -n "hello" >/dev/udp/remotehost/8000
127.0.0.1
,而不是对localhost
在Ubuntu 14.04。(是的,我确实有localhost
在/etc/hosts
)
/dev/udp/
不是真实文件。它只是bash专门解释的文件名。
我-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
应该可以。
Netcat每换行发送一个数据包。很好。如果您做的事情更复杂,那么您可能还需要其他东西。
当我意识到这一点时,我正和Wireshark混在一起。不知道是否有帮助。
echo -n "hello\nworld" >/dev/udp/localhost/514
,您将获得2条线
我有同样的问题,但是我使用-w 0
选项仅发送一个数据包然后退出。您应该使用以下命令:
echo -n "hello" | nc -4u -w0 localhost 8000
-w0
。错误:无效的等待时间0
-q seconds: after EOF on stdin, wait the specified number of seconds and then quit. If seconds is negative, wait forever.