如下代码: 用Socket接值时候 需要为其赋长度
 byte[] dataPackets = new byte[2048]; receiveLength = rtcpSocket.ReceiveFrom(dataPackets, ref remoteEndPoint);
但是接到的数组长度(receiveLength )可能没有实际设置的2048位  导致后边的数组后边全部都是0假设接到长度为1500位
请问怎样在接到数组dataPackets后,把1501-2047位全部去掉使其成为一个长度只有1500的byte数组

解决方案 »

  1.   

    你可以重新创建一个receiveLength 长度的byte[] 
    然后用Array.Copy(,,,,);
      

  2.   

    byte[] temp = new byte[2048];
    receiveLength = rtcpSocket.ReceiveFrom(temp, ref remoteEndPoint);
    byte[] dataPackets = new byte[receiveLength];
    Array.Copy(temp,dataPackets,receiveLength);
    //使用dataPackets就可以了。
      

  3.   


    receiveLength = rtcpSocket.ReceiveFrom(dataPackets, ref remoteEndPoint);
    byte[] dataPackets = new byte[receiveLength ];
    ????
      

  4.   

    dataPackets=dataPackets.Where(d=>d>0).ToArray();
      

  5.   

    int ilen = rtcpSocket.Available;  //这个就是你要的数据长度。
    if(ilen > 0)
    {
    byte[] dataPackets = new byte[ilen];
    receiveLength = rtcpSocket.ReceiveFrom(dataPackets, ref remoteEndPoint);
    }