Сериализованным данным по tcpclient нужно указать количество?

Я отправил данные в виде байтов, используя TcpClient, и я хотел отправить свой собственный класс вместо байтов данных.

Под байтами данных я имел в виду то, что я посылаю данные, преобразованные в байты, вот так:

using (MemoryStream bufferStream = new MemoryStream())
{
    using (BinaryWriter bufferData = new BinaryWriter(bufferStream))
    {
        // Simple PONG Action
        bufferData.Write((byte)10);
    }

    _logger.Info("Received PING request, Sending PONG");
    return bufferStream.ToArray();
}

И вместо этого я хотел бы отправить его так, без необходимости объявлять его размер или ж / д

public class MyCommunicationData
{
    public ActionType Action { get; set; }
    public Profile User { get; set; }
    ...
}

Обычно, когда я отправляю свои данные в байтах, первые 5 байтов я использую, чтобы указать действие и размер сообщения.

Но если я перейду на сериализацию всех данных как одного класса, мне все равно нужно будет отправить какое действие и размер, или использовать сериализованные сообщения, клиент и сервер будут знать, что читать и т. Д., Или есть способ сделать это, чтобы я мог это сделать отправить его без необходимости указывать вещи из объекта сериализации?

Не уверен, если это имеет значение здесь, я используюAsyncCallback для чтения и записи в сетевой поток:

_networkStream = _client.tcpClient.GetStream();
_callbackRead = new AsyncCallback(_OnReadComplete);
_callbackWrite = new AsyncCallback(_OnWriteComplete);

Дайте мне знать, если вы хотите, чтобы я опубликовал какие-либо другие функции.

Ответы на вопрос(1)

Ваш ответ на вопрос