WSAAsyncSelect模型,自动把套拼字设置为非阻塞模式!为其绑定一个窗口句柄后,当有网络事件发生后,便向此窗口发送信息。所以在MFC中应用WSAAsyncSelect模型步骤如下:
1、在相应头文件中自定义消息
如:#define SER_MESSAGE WM_USER+100
2、在相应头文件中声明自定义消息处理函数
afx_msg LRESULT OnServerMessage(WPARAM wParam, LPARAM lParam);
3、在实现文件中,添加消息映射:
如:ON_MESSAGE(SER_MESSAGE , OnServerMessage)
4、实现消息处理函数
LRESULT CChatDlg::OnServerMessage( WPARAM wParam, LPARAM lParam )
{
//
}
WSAAsyncSeleccts最容易出错地方是其通知码的选择:
int WSAAsyncSelect(
__in SOCKET s,
__in HWND hWnd,
__in unsigned int wMsg,
__in long lEvent
);
lEvent 参数:是以下值的组合
FD_READ 表明套接字接收到对方发送的数据包,可以读数据了
服务器端要有 ACCEPT | FD_READ, 来接受连接与接收信息。FD_WRITE 表明数据缓冲区再次变空,可以再发数据
FD_ACCETP 检测到有连接进入
FD_CONNECT 表明用套接字去连接对方主机成功
FD_CLOSE 检测到套接字对应的连接关闭
客户端要有 FD_CONNECT 验证连接是否成功!
第一次写博客,就到这儿吧!