socket创建失败,WSAGetLastError返回0

geziliu geziliu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
socket创建失败,WSAGetLastError返回0,偶尔会出现这样正常吗?


DWORD _stdcall thread(LPVOID lp)
{
SOCKET _socket;
_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);


if (SOCKET_ERROR == _socket)
{
char tmp[55];
sprintf(tmp, "socket创建失败,原因:%d", WSAGetLastError());
OutputDebugString(tmp);
Sleep(2000);
return SOCKET_ERROR;
}

sockaddr_in clientAddr;
memset(&clientAddr, 0, sizeof(clientAddr));
clientAddr.sin_family = AF_INET;
clientAddr.sin_addr.s_addr = inet_addr("111.178.146.10");
clientAddr.sin_port = ::htons(u_short(2001));



int iMode = 1;
ioctlsocket(_socket,FIONBIO, (u_long FAR*) &iMode);
FD_SET WriteSet;
timeval timeout;
timeout.tv_sec = 2; // 检测时间2秒
timeout.tv_usec = 0;
char error;
int len = sizeof(char);

BOOL bReuseaddr=TRUE;
setsockopt(_socket,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));

if ( 0 != connect(_socket, (SOCKADDR*)&clientAddr, sizeof(clientAddr)) )
{
FD_ZERO(&WriteSet);
FD_SET(_socket, &WriteSet);
if ( select(0, NULL, &WriteSet, NULL, &timeout) > 0 )
{
getsockopt(_socket, SOL_SOCKET, SO_ERROR, &error, &len);
if (error != 0)
{
char tmp[55];
sprintf(tmp, "socket创建失败,原因:%d", WSAGetLastError());
OutputDebugString(tmp);

closesocket(_socket);
return SOCKET_ERROR;
}
}
else
{
char tmp[55];
sprintf(tmp, "socket创建失败,原因:%d", WSAGetLastError());
OutputDebugString(tmp);

closesocket(_socket);
return SOCKET_ERROR;
}
}

OutputDebugString("连接成功");

Sleep(100000000);
return 0;

}

void CConnectDlg::OnOK()
{
WSADATA m_wsaD;
if ( 0 != WSAStartup(0x202,&m_wsaD) )
{
::MessageBox(0, "初始化WSA失败!", 0, 0);
}

for (int i = 0; i < 1000; i++)
{
CreateThread(0, 0, thread, 0, 0, 0);
Sleep(100);
}
}




打印信息:
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] socket创建失败,原因:0
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功
[2216] 连接成功


偶尔出现一个socket返回失败正常吗? 是不是创建的太快原因?
...全文
评论 2
收藏 已收藏
分享
返回顶部
geziliu
网络编程 18,356 成员 64,161 内容