shell – nc(netcat)在UDP模式下挂起,等待更多数据.

我正在尝试通过读取块内部的nc向statsd发送一个小字符串:

while read line; do
    printf "folder.counter:value|1c" | nc -q 0 -u $host $port
done

不幸的是,当处于UDP模式时,nc似乎想要无限期地等待,即使我已经指定了-q 0,该手册页所说的将使程序在EOF之后立即退出.

我试过传递-w 1,但是如果我发送的数据每秒输入的行数超过一行,那么数据就会缓慢增加,我会失去实时统计数据(更不用说冒着某种缓冲区溢出的风险) ).

是否有可能做我正在尝试用netcat做的事情,或者我是否需要用具有statsd库的语言编写一些东西?

我最终通过切换到socat修复了这个问题:

while read line; do
    printf "folder.counter:value|1c" | socat -t 0 - UDP:$host:$port
done
翻译自:https://serverfault.com/questions/498880/nc-netcat-hangs-waiting-for-more-data-in-udp-mode

转载注明原文:shell – nc(netcat)在UDP模式下挂起,等待更多数据.