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

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