我正在使用winsock2的套接字创建一个项目 我使用系统调用连接到本地 IP 地址上的套接字,然后实现了一个用于错误处理目的的简单方法。
// Client-side
int LPTF_SOCKET::connectLPTFSocket()
{
if (connect(sockfd, (struct sockaddr *)&server, sizeof(server)) < 0)
{
std::cerr << "Connection failed: " << WSAGetLastError() << std::endl;
closesocket(sockfd);
WSACleanup();
return 1;
}
std::cerr << "connect returned success" << std::endl;
return 0;
}
但是,每当发生错误时,我的项目合作伙伴都会收到代码 10047。此后它已修复,但我总是收到错误 0,这很奇怪,因为它没有出现在官方文档中
问题是,这个错误代码出现在我的两台电脑上,所以这就更奇怪了。 我一开始以为这可能是由于防火墙的原因,但我不确定。你们知道发生了什么事吗?我不能再继续这个项目了
我尝试在服务器端运行该程序。它工作得很好,但不适用于客户端。
std::cerr 调用可能在打印“连接失败”时清除错误状态。
尝试这个调整:
if (connect(sockfd, (struct sockaddr *)&server, sizeof(server)) < 0)
{
DWORD lastErr = WSAGetLastError();
std::cerr << "Connection failed: " << lastError << std::endl;
closesocket(sockfd);
WSACleanup();
return 1;
}