socket创建失败,WSAGetLastError返回0

geziliu 2012-09-21 06:21:16
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返回失败正常吗? 是不是创建的太快原因?
...全文
168 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
geziliu 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这个是哪句输出来的?[2216] socket创建失败,原因:0
[/Quote]晕。我看错了。是connect失败打印的同样信息。。已给分
Eleven 2012-09-21
  • 打赏
  • 举报
回复
这个是哪句输出来的?[2216] socket创建失败,原因:0

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧