Наилучшая практика: создание и анализ сетевых пакетов для известного протокола в C #? - PullRequest
1 голос
/ 25 августа 2009

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

Существует ли руководство или общепринятая практика генерации и анализа сетевых пакетов на основе существующего протокола, такого как SMPP (протокол одноранговых коротких сообщений [используется для SMS-сообщений]) или различных протоколов чата, таких как HOTLINE или IRC с C #.

В одном из ответов упоминаются Google Буферы протокола и .NET версия . Посмотрев на это, я понял, что сериализация чрезвычайно полезна, если вы контролируете оба конца (клиента и сервера). Где я буду следовать спецификации протокола.

Генерация В прошлом я создал класс или структуру со свойствами, которые являются частью сетевого пакета / протокола:

// PSEUDO CODE
class NetworkObject 
{
    private int length;
    private string data;

    // ...

    public byte[] GetBytes() 
    {
        // Convert string and int to byte array
        return byte array;
    }
}

В классе есть метод byte [] GetBytes () , который я вызываю, как только я установил соответствующие свойства. Я беру этот байтовый массив и отправляю его по сети. В моем предыдущем вопросе один из ответов предложил сохранить данные в потоке памяти или в потоковом потоке, что кажется лучшей идеей.

Кажется, что мой метод массива байтов, вероятно, медленнее, чем передача сетевого потока методу, который записывает данные пакета в соответствии со свойствами класса непосредственно в поток. Это то, что я, вероятно, сделаю, если я не пропущу что-то действительно большое здесь.

Синтаксический При синтаксическом анализе я использую различные операторы case, чтобы пройтись по различным PDU и генерировать NetworkObject с соответствующими заполненными свойствами, и делаю с ним, как я считаю нужным.

1 Ответ

1 голос
/ 17 февраля 2010

Почему бы вам не попробовать сериализацию объектов?

...