我正在將一個程序的標準輸出傳送給netcat:nc -u localhost 50000
。監聽UDP 50000是一個Python程序,它是這樣的:通過netcat發送線路到Python的問題
lstsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
lstsock.setblocking(0)
while True:
print '1'
try:
tmp = lstsock.recv(SOCK_BUFSZ)
except socket.error, e:
if e.args[0] == errno.EWOULDBLOCK:
sleep(.5)
continue
else:
print("Socket error: {}".format(e))
return
print tmp
我總是得到了幾行,但隨後的程序掛起print '1'
。當我運行線生成程序時,輸出是每秒約stdin的一行。這裏發生了什麼?
編輯,在情況下,它以某種方式相關的:。生產線的程序是在搬運工(與--net="host"
運行,並且服務器(接受線)是在主機上運行搬運工泊塢正在發送過來127.0.0.1
另一個編輯:它似乎停止接受輸入時收到SOCK_BUFSZ字節。它不是回收緩衝區?
更新:這似乎是一個問題與Docker。它工作在本地主機,但不是從容器。連通性(我可以ping通服務器,並且第一次突發數據通過)
我可以問你讓我們看看你的netcat腳本嗎? –
@DavidCullen - ./command | nc -u localhost 50000 –