读书人

bind始终不成功异常代码为10049

发布时间: 2012-01-13 22:43:29 作者: rapoo

bind始终不成功,错误代码为10049
BOOL CServerDlg::InitNetwork()
{
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2,1), &wsaData) != 0)
{
WSACleanup();
AfxMessageBox( "初始化网络协议失败! ");
return FALSE;
}

ServerSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(ServerSocket == INVALID_SOCKET)
{
closesocket(ServerSocket);
WSACleanup();
AfxMessageBox( "创建套接字失败! ");
return FALSE;
}

sockaddr_in localAddr;
//memset((void*)&localAddr, 0, sizeof(localAddr));
localAddr.sin_family = AF_INET;
localAddr.sin_port = htons(8888);
localAddr.sin_addr.s_addr = htonl(INADDR_ANY);
WSAStartup(MAKEWORD(2,1), &wsaData);
if(bind(ServerSocket, (struct sockaddr*)&localAddr, sizeof(localAddr)) == SOCKET_ERROR)
{
//就在这里绑定不起,错误代码为10049
closesocket(ServerSocket);
WSACleanup();
AfxMessageBox( "绑定地址失败! ");
return FALSE;
}

if(WSAAsyncSelect(ServerSocket, m_hWnd, NETWORK_EVENT, FD_ACCEPT|FD_READ|FD_CLOSE)
== SOCKET_ERROR)
{
closesocket(ServerSocket);
WSACleanup();
AfxMessageBox( "注册网络异步事件失败! ");
return FALSE;
}

if(listen(ServerSocket, 5) == SOCKET_ERROR)
{
closesocket(ServerSocket);
AfxMessageBox( "设置监听失败! ");
WSACleanup();
return FALSE;
}

return TRUE;
}

[解决办法]
if(WSAStartup(MAKEWORD(2,1), &wsaData) != 0)
{
WSACleanup();
AfxMessageBox( "初始化网络协议失败! ");
return FALSE;
}
改称
if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
{
WSACleanup();
AfxMessageBox( "初始化网络协议失败! ");
return FALSE;
}

ServerSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
改称ServerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

//memset((void*)&localAddr, 0, sizeof(localAddr));
去掉注释,并改成 memset(&localAddr, 0, sizeof(localAddr));

把bind前边一行的 WSAStartup(MAKEWORD(2,1), &wsaData);注释掉

在试一下


读书人网 >VC/MFC

热点推荐