Próbuję wysłać mały ciąg do statystyki przez nc wewnątrz bloku odczytu:
while read line; do
printf "folder.counter:value|1c" | nc -q 0 -u $host $port
done
Niestety, gdy jest w trybie UDP, nc wydaje się chcieć czekać w nieskończoność, mimo że to określiłem -q 0
, co według strony podręcznika spowoduje, że program wyjdzie natychmiast po EOF.
Próbowałem przekazać -w 1
, ale jeśli dane, które wysyłam, przychodzą z więcej niż jedną linią na sekundę, bufory danych się zwiększają i tracę statystyki w czasie rzeczywistym (nie wspominając o ryzyku przepełnienia bufora).
Czy można zrobić to, co próbuję zrobić z netcat, czy też muszę napisać coś w języku, który ma bibliotekę statystyk?
Odpowiedzi:
Naprawiłem problem, przechodząc do
socat
:źródło
Możesz podać 0 jako wartość limitu czasu dla -w, aby w ogóle nie czekał.
źródło
invalid wait-time 0
dodanie opcji -v rozwiązało mój problem. Nie jestem pewien.
źródło
Miałem ten sam problem; rozwiązał to za pomocą
-c
opcji:więc coś w stylu
Tak, naprawdę nie ma sensu „zamykać” połączenia udp - ale to zadziałało.
źródło
-c
rozwiązało mój problem znetcat (The GNU Netcat) 0.7.1
Dla nas było to, że wysyłaliśmy ładunek nc z jednej maszyny na drugą za pomocą skryptu python. W pythonie, kiedy jawnie zakodowaliśmy ładunek w „UTF-8”, po prostu działało.
źródło