socket 接收数据时第一个字节接收不到//发送
s.Send(sendData,0,sendData.Length, SocketFlags.None);//sendData.Length=389//接收时
int len = skt.Receive(requestBuffer,0,skt.Available,SocketFlags.None); //len =388//调试时requestBuffer中少的数据是sendData中的第一个字节,请问是什么原因啊?

解决方案 »

  1.   

    s.Send(sendData,0,sendData.Length -1, SocketFlags.None);//sendData.Length=389这样?
      

  2.   

    你的程序中一共有几个地方使用到了 Receive ?
      

  3.   


    //服务器发送
    byte[] sendData = new byte[b.Length + DataPack.DataSizeNum];
                byte[] lenSize = SocketCommon.Encode(b.Length.ToString());            for (int i = 0; i < lenSize.Length; i++)
                {
                    sendData.SetValue(lenSize[i],i);
                }
                //int revDataLen = Convert.ToInt32(SocketCommon.DeEncode(sendData, 0, DataPack.DataSizeNum));            b.CopyTo(sendData, DataPack.DataSizeNum);
                s.Send(sendData,0,sendData.Length, SocketFlags.None);//客户端接收
     int len = skt.Receive(requestBuffer,0,skt.Available,SocketFlags.None);//不管服务器怎么发,这里始终接收到的数据少一个字节,就是发来的第一个字节
      

  4.   

    应该是程序的问题 多Debug
      

  5.   

    你写的肯定有问题!要不然不可能有这情况!你好好找找你有几个地方调用了Receive,而且你在看看结果是不是和你发送的结果一样备!如果一样,它少就少一个没什么大不了的!
      

  6.   

    skt.Receive(requestBuffer,SocketFlags.None);
    用这个重载试下呢。我怎么没有找到你用的那个重载方法呢!