正在阅读:新手必学:windows网络编程经典入门新手必学:windows网络编程经典入门

2004-05-20 10:13 出处:太平洋电脑网 作者:huyoo(转贴) 责任编辑:linjixiong
switch(iEvent)   {   case FD_ACCEPT: file://客户端连接请求   {   OnAccept();      break;   }   case FD_CLOSE: file://客户端断开事件:   {   OnClose(pSock);   break;   }   case FD_READ: file://网络数据包到达事件   {   OnReceive(pSock);   break;   }   case FD_WRITE: file://发送网络数据事件   {   OnSend(pSock);   break;   }   default: break;   }   }      void OnAccept(SOCET pSock) file://响应客户端连接请求函数   {   int len = sizeof(sockaddr);      file://调用API函数,接受连接,并返回一个新套接字   file://还可以获得客户端的IP地址   SOCKET clientSocket = accept(serverSocket,   (struct sockaddr*)&clientaddr, &len);      file://为新的socket注册异步事件,注意没有Accept事件   if(WSAAsyncSelect(clientSocket ,m_hWnd, IP_EVENT,   FD_CLOSE | FD_READ | FD_WRITE) == SOCKET_ERROR)   {   MessageBox("注册异步事件失败!");   return;     }      file://自编函数,将此客户端的相关信息保存下来:套接字、   // IP地址、登陆时间   saveClientSocket(clientSocket,clientAddr,currentTimer);   }      void OnClose(SOCET pSock)   {   file://自编函数,结束与相应的客户端的通信,释放相应资源并做相应处理   endClientSocket(pSock);   }      void OnSend(SOCET pSock)   {   file://自编函数,在给客户端发数据时做一些预处理   handleOnSend(pSock);   }      void OnReceive(SOCET pSock)   {   recv(...); file://调用API函数,读出网络缓冲区中的数据包      file://自编函数,将此数据包和发出此数据的客户端   file://clientSocket封装成一条网络消息   buildNetMsg(...);      file://自编函数,将此网络消息放入一个消息队列中,由工作线程去处理   saveNetMsg(...);   SetEvent(...); file://用事件对象触发工作线程   希望看到更多更经典的开发技巧,请随时刷新《开发特区》栏目。
察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品