Remy Lebeau..
13
您需要循环发送和接收.既不保证send()也不recv()保证发送/读取您请求的字节数.
您还应该在文件数据之前发送文件大小,以便接收方知道预期的字节数和停止读取的时间.
尝试更像这样的东西:
服务器
bool senddata(SOCKET sock, void *buf, int buflen)
{
unsigned char *pbuf = (unsigned char *) buf;
while (buflen > 0)
{
int num = send(sock, pbuf, buflen, 0);
if (num == SOCKET_ERROR)
{
if (WSAGetLastError() == WSAEWOULDBLOCK)
{
// optional: use select() to check for timeout to fail the send
continue;
}
return false;
}
pbuf += num;
buflen -= num;
}
return true;
}
bool sendlong(SOCKET sock, long value)
{
value = htonl(value);
return senddata(sock, &value, sizeof(value));
}
bool s