问一下
为什么我用socket收消息
buffer设小了收不全,大了后面就是一大堆的烫烫烫烫烫烫烫烫烫烫
有没什么办法把buffer设成正合适吗?以下是代码:  char buffer[1024];
  int bytes = 0;
  
  SOCKADDR addrfrom;
  int addrfromlen = sizeof(SOCKADDR);  ::recvfrom(m_hSocket, buffer, sizeof(buffer),0, &addrfrom, &addrfromlen);

解决方案 »

  1.   

    WINNER_INFO             winner_info;           //传送的结构                 
    memset(&winner_info,   0x00,   sizeof(WINNER_INFO)   );
    m_pSocket->Receive((char*)(&winner_info),sizeof(WINNER_INFO),0);m_pSocket->Send((char*)(&winner_info),sizeof(WINNER_INFO),0);
      

  2.   

    因为你接收的数据少于buffer[1024]提供的空间,而你没有在后面加上结束标志,buffer[rec]=NULL;
      

  3.   

    char buffer[1024];
      int bytes = 0;
      
      SOCKADDR addrfrom;
      int addrfromlen = sizeof(SOCKADDR);  bytes =::recvfrom(m_hSocket, buffer, sizeof(buffer),0, &addrfrom, &addrfromlen);
    buffer[bytes ]='\0';需要在最后加上结束符