プログラムの標準出力を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 - /コマンド| nc -u localhost 50000 –