6 次迭代后,发送返回 -1 aka SOCKET_ERROR。我尝试添加一个 sleep 函数,这样它会在再次循环之前等待一秒钟,但这使它只会迭代 2 次。是什么导致了这个错误?
#pragma comment(lib, "ws2_32.lib")
#include <iostream>
#include <windows.h>
void main ()
{
int reqVersion = 2;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(reqVersion,0), &wsaData)==0)
{
// Check if major version is at least reqVersion
if (LOBYTE(wsaData.wVersion) >= reqVersion)
{
SOCKADDR_IN addr;
int addrlen = sizeof(addr);
SOCKET sListen;
SOCKET sConnect;
sConnect = socket(AF_INET, SOCK_STREAM, NULL);
addr.sin_addr.s_addr = inet_addr("192.168.0.7");
addr.sin_family = AF_INET;
addr.sin_port = htons(1234);
if(connect(sConnect, (SOCKADDR*)&addr, sizeof(addr)) == 0)
{
char message[10] = "Hellooooo";
for(int i = 0; i <50; i++)
{
int sendOutcome = send(sConnect, message, sizeof(message), 0);
if(sendOutcome == SOCKET_ERROR)
{
std::cout << "Socket Error..." << std::endl;
}
else
{
std::cout << "SENT..." << std::endl;
}
Sleep(1000);
}
}
else
{
std::cout << "Not Connected..." << std::endl;
}
}
else
{
std::cout << "Required version not available..." << std::endl;
}
// Cleanup winsock
if (WSACleanup()!=0)
{
std::cout << "Cleanup failed..." << std::endl;
}
}
else
{
std::cout << "Startup failed..." << std::endl;
}
system("PAUSE");
}