Есть несколько способов сделать это. Возможно, вам удастся поэкспериментировать с маршалинг-атрибутами , такими как StructLayout, чтобы упаковать структуру в байтовый массив, но это, вероятно, сложно и не стоит усилий.
Вы можете использовать специализированную среду, такую как Protobuf , чтобы приписать класс так, чтобы он был сериализован в соответствии с нужной вам структурой.
Но, по моему опыту, самый простой, быстрый и гибкий способ создания двоичной структуры, подобной этой, - это использовать класс MemoryStream для хранения буфера байтов, а затем использовать BinaryWriter вокруг него, чтобы на самом деле записать двоичные данные в поток.
В любом случае полезно иметь работающий сервер для ссылки. Для захвата проводного трафика используйте такой инструмент, как Wireshark или Microsoft Network Monitor, чтобы вы могли сравнить формат проводного соединения с примером, который, как известно, работает.