7.3. 不完整传送的後续处理
#include <sys/types.h>
#include <sys/socket.h>
int sendall(int s, char *buf, int *len)
{
int total = 0; // 我们已经送出多少 bytes 的数据
int bytesleft = *len; // 我们还有多少数据要送
int n;
while(total < *len) {
n = send(s, buf+total, bytesleft, 0);
if (n == -1) { break; }
total += n;
bytesleft -= n;
}
*len = total; // 返回实际上送出的数据量
return n==-1?-1:0; // 失败时返回 -1丶成功时返回 0
}Last updated