Остановился на этом:
private void TcpListenToClient()
{
var offset = 0;
var buffer = new byte[16384];
Connected = SocketToClient.Connected;
while (Connected)
{
try
{
offset += SocketToClient.GetStream().Read(buffer, offset, 16384 - offset);
var packetLength = BitConverter.ToInt16(new[] {buffer[0], buffer[1]}, 0);
while (offset >= packetLength && packetLength > 0)
{
var inputPacket = new byte[packetLength];
offset -= packetLength;
Array.Copy(buffer, 0, inputPacket, 0, packetLength);
Array.Copy(buffer, packetLength, buffer, 0, 16384 - packetLength);
_readFromClient.Add(inputPacket);
_dbg.Information("[ReadFromClient] Raw Packet:" + BitConverter.ToString(inputPacket));
packetLength = BitConverter.ToInt16(new[] {buffer[0], buffer[1]}, 0);
}
}
catch
{
Close();
}
}
}Code: C++