如果我像这样运行一个简单的 UDP 侦听器:
nc -l -u -p 1234
然后我似乎只得到了第一个入站 UDP 数据包。例如,如果我运行:
$ echo abc | nc -u localhost 1234
["abc" appears in output of server as expected]
$ echo abc | nc -u localhost 1234
read(net): Connection refused
如果我像这样运行一个简单的 UDP 侦听器:
nc -l -u -p 1234
然后我似乎只得到了第一个入站 UDP 数据包。例如,如果我运行:
$ echo abc | nc -u localhost 1234
["abc" appears in output of server as expected]
$ echo abc | nc -u localhost 1234
read(net): Connection refused
使用零 (0) 超时
“服务器”:
“客户”:
结果:
测试:
我找到了一个可以帮助你的链接:netcat:UDP 的奇怪行为——只接收发送的第一个数据包。
这是一个有趣的问题,希望这能回答你的问题。
要监控 UDP 端口,您可以尝试
这适用于我的 GNU netcat 0.7.1。
您需要选择一个端口,并始终从该端口发送。
正如这里所解释的,在侦听 UDP 端口得到它的第一个数据包后,如果它来自同一个发送端口,它将只接受额外的输入。
所以,给定一个发送端口、一个监听端口和一个监听主机:
一个听众开始于:
然后,发送者必须使用
-p
始终使用相同源端口的选项。这将起作用并在侦听器上打印所有 4 行:另外,请注意不同版本的 netcat 对其选项有不同的规则:
netcat-traditional
在基于 Debian 的发行版中)不支持超时 0(-w 0
),因此您需要-w 1
改用。ncat
也不支持,但支持分数超时,例如-w 0.1
-p
监听端口之前的监听端口仅在原始nc
v.1.10 中需要。其他版本只是将最后一个参数作为监听端口。但也都接受它作为-p $listen_port
。我目前得到:
Ncat:版本 7.50 ( https://nmap.org/ncat ) Ncat:UDP 模式不支持 -k 或 --keep-open 选项,但 --exec 或 --sh-exec 除外。退出。