5.1.3关于 CAsyncSocke类可以接受并处理的消息事件 2.MFC框架对于六个网络事件的处理 当上述的网络事件发生时,MFC框架作何处理呢?按照 Windows的消息驱动机制,MFC框架应当把消息发送给相应 的套接字对象,并调用作为该对象成员函数的事件处理函数。 事件与处理函数是一一映射的
2.MFC框架对于六个网络事件的处理 当上述的网络事件发生时,MFC框架作何处理呢?按照 Windows的消息驱动机制,MFC框架应当把消息发送给相应 的套接字对象,并调用作为该对象成员函数的事件处理函数。 事件与处理函数是一一映射的。 5.1.3 关于CAsyncSocket类可以接受并处理的消息事件
5.1.3关于 CAsyncSocke类可以接受并处理的消息事件 在 afxSock h文件中的 CAsyncSocket类的声明中,定义了与这 六个网络事件对应的事件处理函数。 virtual void on receive( int n ErrorCode;/对应 FD READ事件 virtual void On Send( int n Error Code);/对应 FD WRITE事件 virtual void OnAccept( int n Error Code;/对应 FD ACCEPT事件 对应 FD CONNECT事件 virtual void On Connect(int n ErrorCode);
在afxSock.h文件中的CAsyncSocket类的声明中,定义了与这 六个网络事件对应的事件处理函数。 virtual void OnReceive(int nErrorCode);//对应 FD_READ事件 virtual void OnSend(int nErrorCode);//对应 FD_WRITE事件 virtual void OnAccept(int nErrorCode);//对应 FD_ACCEPT事件 //对应 FD_CONNECT事件 virtual void OnConnect(int nErrorCode); 5.1.3 关于CAsyncSocket类可以接受并处理的消息事件
5.1.3关于 CAsyncSocke类可以接受并处理的消息事件 virtual void on close( lint n Error Code);∥对应 FD CLOSE事件 对时应 FD OOB事件 virtual void On OutofBandData(int n Error Code); 当某个网络事件发生时,MFC框架会自动调用套接字对 象的对应的事件处理函数。这就相当给了套接字对象一个通知, 告诉它某个重要的事件已经发生。所以也称之为套接字类的通 知函数( notification functions)或回调函数( cabac k functions)
virtual void OnClose(int nErrorCode); //对应 FD_CLOSE事件 //对应 FD_OOB事件 virtual void OnOutOfBandData(int nErrorCode); 当某个网络事件发生时,MFC框架会自动调用套接字对 象的对应的事件处理函数。这就相当给了套接字对象一个通知, 告诉它某个重要的事件已经发生。所以也称之为套接字类的通 知函数(notification functions)或回调函数(callback functions)。 5.1.3 关于CAsyncSocket类可以接受并处理的消息事件
5.1.3关于 CAsyncSocke类可以接受并处理的消息事件 3.重载套接字对象的回调函数P114 回调函数定义的前面都有 virtua关键字,表明是可重载的。 般不直接使用 CAsyncSocket或 Csocket,而是派生出你自己的 套接字类,在派生类中对这些虚拟函数重载,并加入你对于网 络事件处理的特定代码 如果你从 CAsyncSocket类派生了自己的套接字类,你必须重 载你的应用程序所感兴趣的那些网络事件所对应的通知函数。 如果从 Csocket派生了一个类,是否重载所感兴趣的函数则由你 自己决定。 MFC框架自动调用通知函数,使得你可以在套接字被通知 的时候来优化套接字的行为
3.重载套接字对象的回调函数 P114 回调函数定义的前面都有virtual关键字,表明是可重载的。 一般不直接使用CAsyncSocket或Csocket,而是派生出你自己的 套接字类,在派生类中对这些虚拟函数重载,并加入你对于网 络事件处理的特定代码. 如果你从CAsyncSocket类派生了自己的套接字类,你必须重 载你的应用程序所感兴趣的那些网络事件所对应的通知函数。 如果从Csocket派生了一个类,是否重载所感兴趣的函数则由你 自己决定。 MFC框架自动调用通知函数,使得你可以在套接字被通知 的时候来优化套接字的行为。 5.1.3 关于CAsyncSocket类可以接受并处理的消息事件
5.1.4客户端套接字对象请求连接到服务器端套接字对象 在服务器端套接字对象已经进入监听状态之后,客户端应 用程序可以调用 CAsyncSocket类的 Connect0成员函数,向服 务器发出一个连接请求,如果服务器接受了这个连接请求, 两端的连接就建立起来了。 CAsyncSocket: Connecte0成员函数有两种重载的调用形式 格式一: BOOL Connect( LPCTSTR IpszHostAddress UINT nHostPort ) 格式二: BOOL Connect( const SOCKADDr IpSockAddr, int n SockAddrlen )
在服务器端套接字对象已经进入监听状态之后,客户端应 用程序可以调用CAsyncSocket类的Connect()成员函数,向服 务器发出一个连接请求,如果服务器接受了这个连接请求, 两端的连接就建立起来了。 CAsyncSocket::Connect()成员函数有两种重载的调用形式: 格式一:BOOL Connect( LPCTSTR lpszHostAddress, UINT nHostPort ); 格式二:BOOL Connect( const SOCKADDR* lpSockAddr, int nSockAddrLen ); 5.1.4 客户端套接字对象请求连接到服务器端套接字对象