资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

主机send失败问题(CAsyncSocket)

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

用CAsyncSocket做了局域网聊天程序,服务和客户分开写的  
  现在连接正常,客户端可以给服务端发消息,服务端却不可以发给客户端  
  其中OnReceive和OnSend的函数是一样的  
   
  客户端:  
  void   CMySock::OnReceive(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  m_nLength   =   Receive(   m_szBuffer,   sizeof(m_szBuffer),   0   );  
   
  CCSockClientApp*   pApp   =   (   CCSockClientApp   *   )AfxGetApp();  
  CCSockClientDlg*   pDlg   =   (   CCSockClientDlg   *   )&pApp->ClientDlg   ;  
   
  pDlg   ->   m_MSGS.AddString   (   m_szBuffer   );  
  memset(   m_szBuffer,   0,   sizeof(m_szBuffer)   );  
   
  CAsyncSocket::OnReceive(nErrorCode);  
  }  
   
  void   CMySock::OnSend(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  Send(   m_szBuffer,   m_nLength,   0   );  
  m_nLength   =   0;  
  memset(   m_szBuffer,   0,   sizeof(m_szBuffer)   );  
   
  AsyncSelect(FD_READ);  
   
  CAsyncSocket::OnSend(nErrorCode);  
  }  
  服务端:  
  void   CNewSocket::OnReceive(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  m_nLength   =   Receive(   m_szBuffer,   sizeof(m_szBuffer),   0   );  
   
  CCSockServerApp   *   pApp   =   (   CCSockServerApp   *   )AfxGetApp();  
  CSockServerDlg   *   pDlg   =   (   CSockServerDlg   *)&pApp   ->   SockServerDlg;  
   
  pDlg   ->   m_MSGS.InsertString(   -1,   m_szBuffer   );  
   
  memset(   m_szBuffer,   0,   sizeof(m_szBuffer)   );  
   
  CAsyncSocket::OnReceive(nErrorCode);  
  }  
  void   CNewSocket::OnSend(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  m_pSocket   ->   Send(   m_szBuffer,   m_nLength,   0   );  
  m_nLength   =   0;  
  memset(   m_szBuffer,   0,   sizeof(m_szBuffer)   );  
   
  //¼ÌÐøÌáÇëÒ»¸ö¡°¶Á¡±µÄÍøÂçʼþ£¬½ÓÊÕServerÏûÏ¢  
  m_pSocket   ->   AsyncSelect(FD_READ);  
   
  CAsyncSocket::OnSend(nErrorCode);  
  }  
   
  怀疑是OnAccept的问题  
  代码如下:  
  void   CNewSocket::OnAccept(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  CNewSocket   *   pSocket   =   new   CNewSocket();  
   
  if(Accept(*   pSocket))  
  {  
  pSocket->AsyncSelect(FD_READ);  
  m_pSocket   =   pSocket;  
  }  
  else    
  delete   pSocket;  
   
  CAsyncSocket::OnAccept(nErrorCode);  
  }  
   
  请高人指点

网友回答:

发表者:gdy119

服务器端:  
  void   CNewSocket::OnReceive(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  m_nLength   =   Receive(   m_szBuffer,   sizeof(m_szBuffer),   0   );  
   
  CCSockServerApp   *   pApp   =   (   CCSockServerApp   *   )AfxGetApp();  
  CSockServerDlg   *   pDlg   =   (   CSockServerDlg   *)&pApp   ->   SockServerDlg;  
   
  pDlg   ->   m_MSGS.InsertString(   -1,   m_szBuffer   );  
                      m_pSocket   ->   Send(   m_szBuffer,   m_nLength,   0   );  
   
                   
   
  memset(   m_szBuffer,   0,   sizeof(m_szBuffer)   );  
   
  CAsyncSocket::OnReceive(nErrorCode);  
  }  
 


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved