当前位置:首页 » 多媒体相关

cAsyncSocket 的 onReceive 问题


我的发送段   ,发送4条结构数据   到接收段  
   
  接收段,代码如下  
   
  void   cdasocket::onreceive(int   nerrorcode)    
  {  
  //   todo:   add   your   specialized   code   here   and/or   call   the   base   class  
    message_stru1     *   mymessage;  
  int   ret=0;  
  cstring   szip("127.0.0.1");  
  uint   uport=7654;  
   
  ret=   this->receivefrom   (mymessage,sizeof(message_stru1),szip,uport,0);  
   
        trace("howmany%i\n",ret);  
  if(ret==error)  
  {  
  trace("error!");  
    afxmessagebox("wrong");  
  }  
    else  
    {  
     
            trace("right");  
    }  
   
    casyncsocket::onreceive(nerrorcode);  
   
  }  
  后来调试窗口中一直不停的出现   right   ,  
  并且,receivefrom   的返回值是   -1  
   
  哪位朋友告诉我这是什么回事啊!

推荐阅读

  • 《搜神记》声讯销售服务版图指南 [详细内容]
  • 夏日炎炎不要独显!求稳还看整合板中低端主板 [详细内容]
  • 紧盯酷睿E4300降价 玩爽它选啥主板富士康 FOXCONN G9657MA-8KS2H中端主板 [详细内容]
  • 短信声讯成了世界杯大赢家 [详细内容]
  • 自己来给诺基亚6131做主题 [详细内容]
  • 酷睿2御用平台 17款P965主板横评华硕 Asus P5B Deluxe/WiFi-APIntel主板 [详细内容]
  • 语音合成技术改写电信传统的声讯服务系统 [详细内容]
  • 网友回答:
    网友:kekepengpeng2

    onreceive事件是当你的socket接受到对方传过来的数据的时候就触发,,你那不停的出现right是不是对方在不停的发送数据?

    网友:joinrry

    winsock.h如此定义:  
      #define   wsabaseerr                             10000  
      /*  
        *   windows   sockets   definitions   of   regular   microsoft   c   error   constants  
        */  
      #define   wsaeintr                                 (wsabaseerr+4)  
      #define   wsaebadf                                 (wsabaseerr+9)  
      #define   wsaeacces                               (wsabaseerr+13)  
      #define   wsaefault                               (wsabaseerr+14)  
       
      wsaefault       the   lpsockaddrlen   argument   was   invalid:   the   lpsockaddr   buffer   was   too   small   to   accommodate   the   peer   address.  
       
      建议用  
      overload函数:int   receivefrom(   void*   lpbuf,   int   nbuflen,   sockaddr*   lpsockaddr,   int*   lpsockaddrlen,   int   nflags   =   0   );

    .

    讨论区

    Login