nc
OS X Mavericksで、クライアントがソケットを開いたままにし、サーバーがソケットから切断されるまでデータを読み取るようにする方法は?
データをサーバーに送信し、nc
応答を使用してこれを実行したいと思います。問題は、nc
サーバーからの応答を待たずにデータを送信した後にソケットを切断することです。
これによりデータが記録され終了します。
$ echo "my instruction here" | nc 127.0.0.1 $MY_PORT
これにより、データを書き込んだ後にサーバーが切断されても終了しません。
$ cat <(echo "my instruction here") - | nc 127.0.0.1 $MY_PORT
OS X Mavericksのマニュアルページには、リクエストを送信してレスポンスを印刷する次のnc
例HTTP GET
がありますが、機能しません。ただ要求を送信し、サーバーからの応答を待たずに終了します。マニュアルページの情報が間違っていると思いますか?
$ echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80
ベストアンサー1
ncのデフォルトの動作は、stdinが閉じられたときに接続を閉じることです。変更するには、Linuxで-qオプション(たとえば-q -1
)を使用できます。OS Xではおそらく同じです。詳しくはマニュアルページをご覧ください。
編集:OS X ncは-qスイッチなどをサポートしていないようです。この場合、次の手順を実行してstdinが閉じられないようにする必要があります。
(エコ「foo」、睡眠100000)|