Wie trenne ich Pakete mithilfe des Sockets-Streams richtig? C #

Ich erstelle eine Server / Client-Anwendung und suche nach Optionen zum Trennen von Paketen. Ich habe gelesen, dass das Richtigste darin besteht, einen Header zu erstellen, der Informationen darüber enthält, wie groß die Nutzlast ist, und dann zu lesen, bis sie endet.

Wie funktioniert das programmatisch?

Auch diese durch "\ n" Newline trennen. Ein richtiges Beispiel wäre schön.

Ich empfange Daten asynchron auf folgende Weise:

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)
        {

        }
    }

Antworten auf die Frage(4)

Ihre Antwort auf die Frage