我的send()和recv()如下所示:
int Send(const char* buffer, int size)
{
cout << "SIZE: " << size << endl;
int offset;
while(offset < size)
{
int n = ::send(getSocket(), buffer + offset, size - offset, 0);
if(n == SOCKET_ERROR)
{
break;
}
offset += n;
if(offset != size)
{
Sleep(1);
}
}
return offset;
}
int Recv(char* buffer, int size)
{
int n = ::recv(getSocket(), buffer, size, 0);
if(n == SOCKET_ERROR)
{
cout << "Error receiving data" << endl;
}
if(n == 0)
{
cout << "Remote host closed connection" << endl;
}
return n;
}
但是我的输出显示了许多发送的字节,这对我来说很奇怪:
Received from client: 669
Sent to web server: 3990336
所以它应该发送669个字节,所以从哪里得到3990336?这是某种错误还是?
感谢。
答案 0 :(得分:5)
您是否注意到int offset;
未初始化?
答案 1 :(得分:4)
offset
初始化为零。否则它可能是任何随机值。Sleep
来电正在阻止,您不需要send
。答案 2 :(得分:4)
也许这只是你的(剥离?)示例代码,但你从未真正初始化offset
。它可能有任何价值,例如-5000并将导致循环发送5669个字节。