Собственно пришел к тому, что код, который был у меня написан неэффективен, и как следствие тормозит все. Другое дело, что я понятия не имею, как переписать этот кусок:
while (Connected)
{
try
{
var tmpbuffer = new byte[1];
SocketToServer.Receive(tmpbuffer, 1, SocketFlags.None);
var newBuffer = new byte[_bufferFc.Length + 1];
_bufferFc.CopyTo(newBuffer, 0);
newBuffer[_bufferFc.Length] = tmpbuffer[0];
var packetLength = -1;
if (newBuffer.Length > 1) packetLength = BitConverter.ToInt16(new[] { newBuffer[0], newBuffer[1] }, 0);
if (newBuffer.Length >= packetLength && packetLength != -1)
{
var finalPacket = new byte[packetLength];
var leftOver = new byte[newBuffer.Length - packetLength];
newBuffer.CopyTo(finalPacket, 0);
newBuffer.CopyTo(finalPacket, newBuffer.Length - packetLength);
newBuffer = leftOver;
DataReceivedToClient(finalPacket);
_dbg.Information(finalPacket.Length + " Fc: " + BitConverter.ToString(finalPacket));
}
_bufferFc = newBuffer;
}
catch
{
Close();
}
}Code: C++
Собирать пакет по 1 байту мне кажется глупым занятием, хотя возможно я не прав и это решение оптимально...вообщем буду рад комментариям.