WSAAsyncSelect()函数有什么功能?一般哪种情况下使有?兄弟英文不太灵,MSDN没看太明白. 刚才我好象回答过一次了?!调用WSAAsyncSelect函数你可以指定系统给你发送什么消息!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请大哥看下面的程序片段: if(::WSAAsyncSelect(m_sListen, m_hWnd, WM_SOCKET_CONNECT,FD_ACCEPT)==SOCKET_ERROR) { m_Err_Message.Format("无法启动IO模块;\n错误码:%d",WSAGetLastError()); ::MessageBox(m_hWnd,m_Err_Message,"系统错误",MB_OK|MB_ICONSTOP); return FALSE; }listen(m_sListen,10);在此片段中,WSAAsyncSelect()与listen()各起什么作用? 其中自定义消息WM_SOCKET_CONNECT的响应函数为:void CSendView::OnConnect(WPARAM wparam, LPARAM lparam){ pFrame->m_wndStatusBar.SetPaneText(1,_T("客户机正在连接我端服务器...")); //响应客户连接 SOCKET sServer=(SOCKET)wparam; int nErrorCode = HIWORD(lparam); int nMessage = LOWORD(lparam); int nLength = sizeof(SOCKADDR_IN); SOCKADDR_IN Client_Addr; int nIndex; CString m_Err_Message; CConnect *pClient=new CConnect; //保存客户机连接信息 nIndex=m_Connect.Add(pClient); pClient->m_Connect=accept(sServer,(LPSOCKADDR)&Client_Addr,&nLength); if(pClient->m_Connect==INVALID_SOCKET) { m_Err_Message.Format("错误:无法接受客户机连接SOCKET!,\n错误码:",WSAGetLastError()); AfxMessageBox(m_Err_Message); m_Connect.RemoveAt(nIndex); return ; } pClient->m_Address=inet_ntoa(Client_Addr.sin_addr); //进行消息队列循环 ::WSAAsyncSelect(pClient->m_Connect,m_hWnd,WM_SOCKET_READ,FD_READ|FD_CLOSE); //创建连接客户端的子线程 pClient->m_Client=new CClientThread(GetSafeHwnd(),pClient->m_Connect,pClient->m_Address); if( pClient->m_Client== NULL ) { ::MessageBox(GetSafeHwnd(),"无法创建连接子线程", "错误", MB_OK|MB_ICONSTOP ); return ; } pClient->m_Client->CreateThread(); pFrame->m_wndStatusBar.SetPaneText(1,_T("连接完毕...")); if(!App.Gl_Begin) pClient->m_Client->PostThreadMessage(WM_SOCKET_SEND_DATA,(WPARAM)ReturnMessage(),0L);} 鼠标移到某图标上面,会弹出一个小窗口显示解释性文字,这个功能如何实现? 两个多线程编程的经典错误 请各位前辈进来看看 帮着出出好的主意 如何实现笔记本电源的充放电测试? 求封装好的POP3+SMTP类 在不用directx的情况下,如何快速显示图像 浏览器编程问题,如何才能确定最后的DownloadComplete事件。 服务器的端口号被客户端占用 一个BUG,希望大家指点一下 同志们,《我的兄弟姐妹》真的很好看啊,你们赶快去借来看看吧,绝对感人啊 各位,编写com/com+用什么最方便? 请问用mciSendString这个函数时要包括那些头文件?怎么老说我没定义?
if(::WSAAsyncSelect(m_sListen, m_hWnd, WM_SOCKET_CONNECT,FD_ACCEPT)==SOCKET_ERROR)
{
m_Err_Message.Format("无法启动IO模块;\n错误码:%d",WSAGetLastError());
::MessageBox(m_hWnd,m_Err_Message,"系统错误",MB_OK|MB_ICONSTOP);
return FALSE;
}
listen(m_sListen,10);在此片段中,WSAAsyncSelect()与listen()各起什么作用?
void CSendView::OnConnect(WPARAM wparam, LPARAM lparam)
{
pFrame->m_wndStatusBar.SetPaneText(1,_T("客户机正在连接我端服务器..."));
//响应客户连接
SOCKET sServer=(SOCKET)wparam;
int nErrorCode = HIWORD(lparam);
int nMessage = LOWORD(lparam);
int nLength = sizeof(SOCKADDR_IN);
SOCKADDR_IN Client_Addr;
int nIndex;
CString m_Err_Message;
CConnect *pClient=new CConnect;
//保存客户机连接信息
nIndex=m_Connect.Add(pClient);
pClient->m_Connect=accept(sServer,(LPSOCKADDR)&Client_Addr,&nLength);
if(pClient->m_Connect==INVALID_SOCKET)
{
m_Err_Message.Format("错误:无法接受客户机连接SOCKET!,\n错误码:",WSAGetLastError());
AfxMessageBox(m_Err_Message);
m_Connect.RemoveAt(nIndex);
return ;
}
pClient->m_Address=inet_ntoa(Client_Addr.sin_addr);
//进行消息队列循环
::WSAAsyncSelect(pClient->m_Connect,m_hWnd,WM_SOCKET_READ,FD_READ|FD_CLOSE);
//创建连接客户端的子线程
pClient->m_Client=new CClientThread(GetSafeHwnd(),pClient->m_Connect,pClient->m_Address);
if( pClient->m_Client== NULL )
{
::MessageBox(GetSafeHwnd(),"无法创建连接子线程", "错误", MB_OK|MB_ICONSTOP );
return ;
}
pClient->m_Client->CreateThread();
pFrame->m_wndStatusBar.SetPaneText(1,_T("连接完毕..."));
if(!App.Gl_Begin)
pClient->m_Client->PostThreadMessage(WM_SOCKET_SEND_DATA,(WPARAM)ReturnMessage(),0L);
}