Shell

nc (netcat) 在 UDP 模式下掛起,等待更多數據。

  • October 16, 2019

我正在嘗試通過讀取塊內的 nc 向 statsd 發送一個小字元串:

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

不幸的是,在 UDP 模式下, nc 似乎想無限期地等待,即使我已經指定-q 0了 ,手冊頁說這將使程序在 EOF 之後立即退出。

我試過 pass -w 1,但如果我發送的數據每秒超過一行,數據緩冲起來,我會失去我的實時統計資訊(更不用說冒著某種緩衝區溢出的風險)。

是否可以用 netcat 做我想做的事情,還是我需要用具有 statsd 庫的語言編寫一些東西?

我最終通過切換到解決問題socat

while read line; do
   printf "folder.counter:value|1c" | socat -t 0 - UDP:$host:$port
done

您可以將 0 指定為 -w 的超時值,因此它根本不會等待。

引用自:https://serverfault.com/questions/498880