是不是非要到网络环境里测试?

解决方案 »

  1.   

    当然不需要,但你在客户端软件中必须自己映射一个网络消息响应函数!        #define NETWORK_EVENT   USER_MESSAGE+100   //定义网络事件      //自己定义消息映射函数,将上面定义的网络事件映射到处理函数
            //OnNetEvent为网络事件处理函数,它在下面定义
            ON_MESSAGE(NETWORK_EVENT, OnNetEvent);                 //定义网络事件的响应函数
            void OnNetEvent(WPARAM wParam, LPARAM lParam)
            {
               //调用API函数,得到网络事件类型
               int iEvent = WSAGETSELECTEVENT(lParam); 
              
               //得到发出此事件的客户端套接字
               SOCKET pSock = (SOCKET)wParam;            switch(iEvent)
               {
               case FD_CLOSE:  //客户端断开事件:
                 {
                    OnClose(pSock);
                    break;
                 }
               case FD_READ:   //网络数据包到达事件
                 {
                    OnReceive(pSock);
                    break;
                 }
       case FD_WRITE:  //发送网络数据事件
         {
                    OnSend(pSock);
            break;
                 }
          default: break;
               }
            }    void OnReceive(SOCET pSock)
            {
               //在此处读出网络缓冲区中的数据
            } 另外在初始化网络时,要对客户端socket注册网络异步事件(用WSAAsyncSelect())。