The send and recv code should look something like this
Code:
// send
char buff[10000];
size_t len = strlen(buff);
char *p = buff;
ssize_t n;
while ( len > 0 && (n=send(sock,p,len,0)) > 0 ) {
p += n;
len =- (size_t)n;
}
if ( len > 0 || n < 0 ) {
// oops, something went wrong
}
// recv
char buff[10000];
size_t len = sizeof(buff);
char *p = buff;
ssize_t n;
while ( len > 0 && (n=recv(sock,p,len,0)) > 0 ) {
p += n;
len =- (size_t)n;
}
if ( len > 0 || n < 0 ) {
// oops, something went wrong
}
Note that BOTH ends use the return result to determine how much data was transferred, and then uses that result to update a buffer pointer and adjust the amount of data remaining.