而且如果第二次send 数据后,接收到的数据不正确,好像有延迟现象
 
         char temp[240];
char cmd[50]="username ";
if( send(sock,cmd, sizeof(cmd),0) == SOCKET_ERROR )
{
ErrorStr=_T("SEND_COMMAND_DATA_ERROR");
return -1;
}
ret = recv(sock,temp,sizeof(temp),0); //有问题100000是受到的数据的大小
if(ret==SOCKET_ERROR)
{
ErrorStr=_T("Receive_DATA_ERROR");
return -1;
}

解决方案 »

  1.   

    是把代码中的temp置空吗?socket的接收缓冲区能不能清空呢?
      

  2.   

    可能是带外数据的问题吧,把两个函数的最后一个参数换成 MSG_PEEK 试试。
      

  3.   

    这个我以前刚好碰到过,我在做一个相当于windows的信使服务时见到的。第一次读的时候一切正常,但以后就不行了。我的解决办法是清空。
    int iRecv=m_sockRecv.Receive(szRecv,60,0);//取得接受的长度
    if(iRecv>=0)
    {
    szRecv[iRecv]='\0';//设置结束符
    m_szRecv=szRecv;//传到字符串
    szRecv[0]='\0';//清空
    UpdateData(FALSE);
    }
    后来一切正常!
    你可以试一下!