nc は、OS X でサーバーが切断されるのを待ちません。

nc は、OS X でサーバーが切断されるのを待ちません。

ncOS 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のマニュアルページには、リクエストを送信してレスポンスを印刷する次のncHTTP 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)|

おすすめ記事