-q
깃발이 없으면 당신의 인스턴스는 netcat
영원히 기다릴 것입니다. UDP에는 "스트림 끝"메시지가 없으므로 stdin 과 네트워크 연결이 모두 완료 netcat
되었음을 알 수있는 방법이 없습니다 .
예를 들어, TCP / IP를 사용하면 예상대로 작동합니다.
nc -l localhost 4300 # Window 1
nc localhost 4300 </etc/group # Window 2
그러나 결정했듯이 UDP / IP를 사용하면 결코 끝나지 않습니다.
nc -u -l localhost 4300 # Window 1
nc -u localhost 4300 </etc/group # Window 2
이것은 -q
플래그가 들어오는 곳 입니다. 그러나 불행히도 값은 받아들이지 않습니다 0
. 또한 정수가 아닌 값을 허용하지 않습니다. 다음은 timeout
다른 외부 유틸리티 를 사용하지 않고 제공 할 수있는 최상의 대안입니다 .
nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
여기에서도 청취 netcat
시간이 정상적으로 종료되는 것은 불가능합니다 . ( -w
시간 초과 옵션은 무시 -q
되며 관련이 없습니다.) 이와 같은 것은 실제 상황에서 사용되어 netcat
90 초 후에 종료됩니다.
timeout 90 nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
-q
.