TCP socketではwriteの後すぐにcloseしてはいけない。 相手側に全てのデータが届いてからcloseする必要がある。 shutdown で書き込み側だけハーフクローズするとよい。 相手側がcloseしてから、こちらをcloseする。相手側がcloseしたことは、readを呼んでブロックさせておくと、読み込みバイト数==0 つまりEOFになったことでわかる。
![TCP socketではwriteの後すぐにcloseしてはいけない](https://cdn-ak-scissors.b.st-hatena.com/image/square/3bbbd6b023bd3ce5b0741b0b9e975ed338f9e7b9/height=288;version=1;width=512/https%3A%2F%2Fs.togetter.com%2Fogp2%2Fe2e07a7da0176a60b6e98d792508763b-1200x630.png)
TCP socketではwriteの後すぐにcloseしてはいけない。 相手側に全てのデータが届いてからcloseする必要がある。 shutdown で書き込み側だけハーフクローズするとよい。 相手側がcloseしてから、こちらをcloseする。相手側がcloseしたことは、readを呼んでブロックさせておくと、読み込みバイト数==0 つまりEOFになったことでわかる。
B! 27 0 0 0 ちょっと使ってるサーバー側で プログラムが暴走して外からソケット通信出来ない、 みたいなエラーが出てた時にやったことのメモ。 ソケット通信が出来ない原因の犯人はTIME_WAIT ソケット通信が出来ない原因の犯人はTIME_WAIT とあるサーバーにアプリを使ってアクセスしようとしたら ソケットが開けない、と言ったエラーが出ました。 ざっと見サーバー側もおかしなことが起こってないような感じでしたが、 $ netstat -anp としてみると、大量の tcp 0 0 192.0.2.0:50000 192.0.2.0:39210 TIME_WAIT みたいなTIME_WAITな物が出てました。 ここで、50000が実際サーバー側で使ってるTCPサーバーなプログラムが 使ってるポートです。 なんか暴走して沢山開こうとしているみたい。 プログラムを再起動してみると、最初
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く