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

回答編集履歴

2

2

2019/08/23 07:56

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -8,4 +8,4 @@
8
8
  クライアント側がわざわざ"\0"文字を付けているので、
9
9
  例えば'\0'が現れるまでrecvを繰り返す、といった処理が必要です。
10
10
 
11
- ※send/recvで送られるデータは1対1にはなりません。send二回で送ったものがrecv1回ですべて受け取れたり、send1回で送ったものがrecv2回で受け取ることもあります。その辺を注意して
11
+ ※send/recvで送受信するデータは1対1にはなりません。send二回で送ったものがrecv1回ですべて受け取れたり、send1回で送ったものがrecv2回で受け取ることもあります。その辺を注意してプログラムを書く必要があります。

1

サーバー

2019/08/23 07:56

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -1,9 +1,11 @@
1
1
  補足です。
2
2
 
3
+ サーバー側のrecvも
4
+
3
5
  > recvMsglen = recv(sock, buf, sizeof(buf), 0);
4
6
 
5
- recvも一度にすべてのデータを受け取れるとは限りません(LANだと大抵うまくいきますが)。
7
+ 一度にすべてのデータを受け取れるとは限りません(今回はデータが小さいのでうまくいきますが)。
6
8
  クライアント側がわざわざ"\0"文字を付けているので、
7
9
  例えば'\0'が現れるまでrecvを繰り返す、といった処理が必要です。
8
10
 
9
- ※send/recvで送られるデータは1対1にはなりません。send二回で送ったものがrecv1回すべて受け取れたり、send1回で送ったものがrecv2回で受け取ることもあります。
11
+ ※send/recvで送られるデータは1対1にはなりません。send二回で送ったものがrecv1回すべて受け取れたり、send1回で送ったものがrecv2回で受け取ることもあります。その辺を注意して