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

回答編集履歴

1

コードが誤っていたので修正

2015/11/30 13:32

投稿

退会済みユーザー
answer CHANGED
@@ -9,12 +9,13 @@
9
9
  原因3 関数ntohが期待の通りに動いていない。
10
10
  ntohlではないか?????
11
11
  原因4 受信が分割されている。recvは取りこぼすこともある。
12
- int bytes,r;
12
+ int i,r;
13
+ char *p = (char *)tmp;
13
- for ( bytes = 16 ; bytes > 0 ; ) {
14
+ for ( i = 0 ; i < 16 ; ){
14
- if ( (r=recv(socket,tmp,bytes,0)) < 0 ) {
15
+ if ((r = recv(socket, p+i, 16-i, 0)) < 0) {
15
16
  perror("ID ERROR");
16
17
  } else {
17
- bytes -= r;
18
+ i += r;
18
19
  }
19
20
  }
20
21
  として、取りこぼしをなくす。