Como separar pacotes adequadamente usando o fluxo de soquetes? C #
Estou construindo um aplicativo servidor / cliente e procurando opções para separar pacotes. Eu li que o mais adequado seria criar um cabeçalho que contém informações sobre o tamanho da carga útil e, em seguida, ler até o final.
Como isso programaticamente funciona?
Também separe aqueles usando a nova linha "\ n". Um exemplo adequado seria bom.
Estou assíncrono recebendo dados desta maneira:
private void AsyncReceive(IAsyncResult result)
{
int bytesTransfered;
try
{
bytesTransfered = _handle.EndReceive(result);
if(bytesTransfered <= 0)
{
throw new Exception("No bytes transfered");
}
}
catch(NullReferenceException)
{
return;
}
catch(ObjectDisposedException)
{
return;
}
catch(Exception)
{
return;
}
byte[] received = new byte[bytesTransfered];
try
{
Array.Copy(_readBuffer, received, received.Length);
}
catch(Exception)
{
Disconnect();
return;
}
// How should I process the received data now?
try
{
_handle.BeginReceive(_readBuffer, 0, _readBuffer.Length, SocketFlags.None, AsyncReceive, null);
}
catch(ObjectDisposedException)
{
return;
}
catch(Exception)
{
}
}