protected async Task<byte[]> ReadPacketAsync(Stream Stream)
{
var PacketSizeData = new byte[4];
var PacketSizeDataReaded = await Stream.ReadAsync(PacketSizeData, 0, 4);
if (PacketSizeDataReaded != 4) throw(new Exception("Error!"));
var PacketSize = BitConverter.ToInt32(PacketSizeData, 0);
var PacketData = new byte[PacketSize];
PacketData[0] = PacketSizeData[0];
PacketData[1] = PacketSizeData[1];
PacketData[2] = PacketSizeData[2];
PacketData[3] = PacketSizeData[3];
var PacketDataReaded = await Stream.ReadAsync(PacketData, 4, PacketSize - 4);
if (PacketDataReaded != PacketSize - 4) throw(new Exception("Error!"));
return PacketData;
}