함수1


int recvn(SOCKET s, char *buf, int len, int flags)

{

int received;

char *ptr = buf;

int left = len;


while(left > 0){

received = recv(s, ptr, left, flags);

if(received == SOCKET_ERROR) 

return SOCKET_ERROR;

else if(received == 0) 

break;

left -= received;

ptr += received;

}


return (len - left);

}



본문에선

int numtotal = 0;
while(1){
retval = recvn(client_sock, buf, BUFSIZE, 0);
if(retval == SOCKET_ERROR){
err_display("recv()");
break;
}
else if(retval == 0) 
break;
else{
fwrite(buf, 1, retval, fp);
if(ferror(fp)){
perror("파일 입출력 오류");
break;
}
numtotal += retval;
}
}

이런식 으로 컨트롤