#region " 发送包 "
/// <summary>
///
/// </summary>
/// <param name="data">实际发送的数据</param>
/// <returns>添加包头长度的数据</returns>
private byte[] SendPack(byte[] data)
{
//data长度不能超出65535
byte[] result = new byte[data.Length + 2];
BitConverter.GetBytes((UInt16)data.Length).CopyTo(result, 0);
data.CopyTo(result, 2);
return result;
}
#endregion
#region " 接收包 "
/// <summary>
///
/// </summary>
/// <param name="data">接收到的数据</param>
/// <returns>粘包的数组,实际发送的数据</returns>
private List<byte[]> BackPack(byte[] data)
{
List<byte[]> result = new List<byte[]>();
int index = 0;
do
{
int len = BitConverter.ToUInt16(data, index);
index += 2;
if (index + len <= data.Length)
{
byte[] tmp = new byte[len];
Array.Copy(data, index, tmp, 0, len);
index += len;
result.Add(tmp);
}
else
{ break; }
} while (index + 2 < data.Length);
return result;
}
#endregion
解决粘包问题
最新推荐文章于 2025-03-05 10:26:05 发布