teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

shutdown システムコールのことを追加

2022/03/12 17:22

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,7 +1,9 @@
1
1
  windows/cygwin でやってみました。
2
- クライアント側は送信後に同一ソケットから受信するならソケットをクローズ出来ませんので、サーバの recv が 0 で戻ることはありません。
2
+ クライアント側は送信後に同一ソケットから受信するならソケットをクローズ出来ません(※)ので、サーバの recv が 0 で戻ることはありません。
3
3
  ですので、 recv が 0 を返すまで読み込んでから送信するというコードは期待した動作にはならないでしょう。
4
4
 
5
+ ※ shutdown システムコールのことをすっかり忘れていました。 shutdown を使えば送信側だけを閉じることが出来ますので、クライアント側が送信後にそうすることが決まっていれば、サーバ側は『切断まで受信する』形で出来ます。
6
+
5
7
  以下では '\0' を区切りとしています。
6
8
 
7
9
  tcptest.c