BOOL CChDlg::InitSocket()
{
m_socket = socket(AF_INET,SOCK_DGRAM,0);
if (INVALID_SOCKET==m_socket)
{
AfxMessageBox("失败INIT");
return FALSE;
}
SOCKADDR_IN addrSock;
addrSock.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSock.sin_family=AF_INET;
addrSock.sin_port = htons(6000); int retval;
retval = bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));
if (SOCKET_ERROR==retval)
{
closesocket(m_socket);
AfxMessageBox("绑定失败");
return FALSE;
}
return TRUE;
}已经使用 AfxSocketInit()成功加载套接字了,没有失败的提示
为什么这里创建失败呢,我写的是基于一个UDP的聊天程序
{
m_socket = socket(AF_INET,SOCK_DGRAM,0);
if (INVALID_SOCKET==m_socket)
{
AfxMessageBox("失败INIT");
return FALSE;
}
SOCKADDR_IN addrSock;
addrSock.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSock.sin_family=AF_INET;
addrSock.sin_port = htons(6000); int retval;
retval = bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));
if (SOCKET_ERROR==retval)
{
closesocket(m_socket);
AfxMessageBox("绑定失败");
return FALSE;
}
return TRUE;
}已经使用 AfxSocketInit()成功加载套接字了,没有失败的提示
为什么这里创建失败呢,我写的是基于一个UDP的聊天程序
感觉和这篇文章的原因是一样的,
我写的也是对话框程序
======================
创建套接字失败2009-03-21 15:09写了一个局域网聊天程序,在创建套接字的时候总是提示创建套接字失败。研究了好久好久~~终于发现问题的所在。程序是在窗口创建的同时创建套接字的,所以套接字库一定要在创建窗口前加载。这是个很低级的错误,呵呵~
===========================================================
这个加载放在哪里
我放在InitInstance 里也是失败
{
/////////////
if(!AfxSocketInit())
{
AfxMessageBox("加载接字失败");
return FALSE;
}
///////////////
}
这里的MessageBox没有弹出来呢,应该是成功了
10093:WSANOTINITIALISED
Winsock尚未初始化。尚未成功完成对WSAStatup的一次调用。都说了,让你初始化。
WSAStartup是全局的,对所有线程都有用。
你可以自己调试一下,在InitInstance()和AfxSocketInit()处设置断点,单步调试验证。
BOOL CChatApp::InitInstance()
{
AfxEnableControlContainer();
if(!AfxSocketInit())
AfxMessageBox("Failed to Initialize Sockets",MB_OK| MB_ICONSTOP);
...