¿Cómo separar adecuadamente los paquetes usando Sockets stream? C#
Estoy creando una aplicación de servidor / cliente y estoy buscando opciones para separar paquetes. He leído que lo más apropiado sería crear un encabezado que contenga información sobre qué tan grande es la carga útil y luego leer hasta que termine.
¿Cómo funciona eso programáticamente?
También separándolos usando "\ n" nueva línea. Un buen ejemplo sería bueno.
Estoy asincrónico recibiendo datos de esta manera:
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)
{
}
}