在客户端发送buf
      iSend=send(sClient,buf,sizeof(buf),0);
服务器端接收
iLen = recv(sAccept,buf,sizeof(buf),0);
iLen和发送的长度一样,但就是在接收的buf 里面全是0 这个是怎么回事哦?
先谢了

解决方案 »

  1.   

    接收代码:
    iLen = sizeof(cli);
    while(1)
    {
    sAccept = accept(sListen,(struct sockaddr *)&cli,&iLen);
    if(sAccept==INVALID_SOCKET)
    {
          AfxMessageBox("accept() Failed",MB_OK,0);
    return 0;
    }

    iLen = recv(sAccept,buf,2,0);
     if(iLen == 0)
    return 0;
    else
    if(iLen == SOCKET_ERROR)
    {
    AfxMessageBox("recv() Failed",MB_OK,0);
    return 0;
    }
    AfxMessageBox(buf,MB_OK,0);
    closesocket(sAccept);
    closesocket(sListen);
    WSACleanup();
    return 1;
    }
      

  2.   

    buf是什么类型的?
    else的内容好像有错误
    可能没接收到
      

  3.   

    char    buf[1024];
    else的内容好像有错误  在哪里呢?
    没收到可是iLen都返回长度了的
      

  4.   

    下面两句都有问题.
    iSend=send(sClient,buf,sizeof(buf),0);
    如果buf是char*型,那么就不能用sizeof,这样只是指针的大小,要该写成你传输进去的数据的大小,例如strlen(buf),也可以指定一个比较大的固定值,例如1024;
    iLen = recv(sAccept,buf,2,0);
    这里接收也要指定大小,指定大点,例如1024没有关系,但是你指定2肯定小了.
      

  5.   

    to howtotell
    我用 i=sizeof(buf)  结果是1024
    还有
    我都把sizeof(buf)改成1024还是不成啊
      

  6.   

    这么奇怪的问题!要不设break单步调试看看
      

  7.   

    调试呗,那么几行代码任谁也看不出问题,况且还只有recv端的代码,谁知道你的send端是否正确