回答編集履歴

1

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

2015/11/30 13:32

投稿

退会済みユーザー
test CHANGED
@@ -20,17 +20,19 @@
20
20
 
21
21
  原因4 受信が分割されている。recvは取りこぼすこともある。
22
22
 
23
- int bytes,r;
23
+ int i,r;
24
24
 
25
- for ( bytes = 16 ; bytes > 0 ; ) {
25
+ char *p = (char *)tmp;
26
26
 
27
+ for ( i = 0 ; i < 16 ; ){
28
+
27
- if ( (r=recv(socket,tmp,bytes,0)) < 0 ) {
29
+ if ((r = recv(socket, p+i, 16-i, 0)) < 0) {
28
30
 
29
31
  perror("ID ERROR");
30
32
 
31
33
  } else {
32
34
 
33
- bytes -= r;
35
+ i += r;
34
36
 
35
37
  }
36
38