我在单文档OnInitialUpdate()中定义个对话框对象
CChat dlg;
dlg.DoModal();
dlg.InitSocket();
准备程序运行后自动打开一个聊天对话框,但是运行后显示“注册网络读取事件失败”
即此函数出现问题WSAAsyncSelect(m_socket,this->m_hWnd,UM_SOCK,FD_READ)
请问该怎样解决?如不用单文档打开对话框,直接用基于对话框的话,没有问题。这是为什么?
BOOL CChat::InitSocket()
{
//加载异步套接字库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return FALSE;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( );
return FALSE;
} syit syit
m_socket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0); //使用UDP
if(INVALID_SOCKET==m_socket)
{
MessageBox("创建套接字失败!");
return FALSE;
}
SOCKADDR_IN addrSock;
addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSock.sin_family=AF_INET;
addrSock.sin_port=htons(6500); //使用6500端口
if(SOCKET_ERROR==bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR)))
{
MessageBox("绑定失败!");
return FALSE;
}
if(SOCKET_ERROR==WSAAsyncSelect(m_socket,this->m_hWnd,UM_SOCK,FD_READ))
{
MessageBox("注册网络读取事件失败!");
return FALSE;
} return TRUE;
}
CChat dlg;
dlg.DoModal();
dlg.InitSocket();
准备程序运行后自动打开一个聊天对话框,但是运行后显示“注册网络读取事件失败”
即此函数出现问题WSAAsyncSelect(m_socket,this->m_hWnd,UM_SOCK,FD_READ)
请问该怎样解决?如不用单文档打开对话框,直接用基于对话框的话,没有问题。这是为什么?
BOOL CChat::InitSocket()
{
//加载异步套接字库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return FALSE;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( );
return FALSE;
} syit syit
m_socket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0); //使用UDP
if(INVALID_SOCKET==m_socket)
{
MessageBox("创建套接字失败!");
return FALSE;
}
SOCKADDR_IN addrSock;
addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSock.sin_family=AF_INET;
addrSock.sin_port=htons(6500); //使用6500端口
if(SOCKET_ERROR==bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR)))
{
MessageBox("绑定失败!");
return FALSE;
}
if(SOCKET_ERROR==WSAAsyncSelect(m_socket,this->m_hWnd,UM_SOCK,FD_READ))
{
MessageBox("注册网络读取事件失败!");
return FALSE;
} return TRUE;
}
解决方案 »
- 菜单中的item变灰的问题
- 请问我在打开vc的对话框时,会提示"the file has been modified outside of the source editor.do you want reload it"?
- 各位强人,帮帮小弟。都有分拿
- 极怪的问题,请高手指点!
- 求多页显示样式的工具栏
- window有没有api能载入png图片?
- 自动运行一个进程当开机时
- 如何获取CppSQLite3Buffer中的char*型数据?
- 一个简单的问题,但我真的不知道!!!
- 如何将客户端udp和tcp关联起来?
- ****200分+有偿求个能播放网络real等格式媒体流的代码*****
- 小弟刚发布的一个针对MFC/ATL/WTL的类库,希望大家多多批评指教!
dlg.InitSocket();
dlg.DoModal();
改完后还是不对
这一句之前你判断一下m_hWnd是否有效!
再根据WSAAsyncSelect的返回值和WSAGetLastError()的错误代码判断错误的原因。