Дизайн протокола для приложения - PullRequest
0 голосов
/ 20 сентября 2011

Я пишу клиент-серверное приложение. При этом мне придется передавать пакеты размером 1024 байта с клиента на сервер. Если размер пакета больше, он должен быть разделен на два пакета. Сервер должен понять, является ли полученный пакет новым пакетом или продолжением старого пакета. Тогда он должен содержать номер версии протокола. Этот протокол может использоваться несколькими приложениями, поэтому пакет также должен содержать идентификатор приложения, чтобы определить, какое приложение. Пакет также должен содержать информацию crc для проверки ошибки в пакете. Может ли кто-нибудь предложить мне дизайн вышеупомянутого протокола для связи между клиентом и сервером. Может ли кто-нибудь предложить мне несколько учебных пособий, которые объяснят, как данные будут зашифрованы и отправлены с клиента, а затем получены и декодированы на сервере.

Ответы [ 2 ]

0 голосов
/ 19 июня 2012

Помимо базовой информации вам нужно будет ввести некую схему нумерации последовательностей, указывающую номер продолжения (0 для первого пакета), чтобы сервер мог понять разницу между новым потоком пакетов и данными из предыдущего потокаа также переупорядочить их, если есть неупорядоченная доставка.

Теперь вам не нужно делать все это, если вы разрабатываете приложение реального мира, поскольку вы просто выбрали бы TCP / IP для надежной транзакции, и если вы проверите детали этого, оно обрабатывает все случаи, которые выговорим о.Но если вам нужно разработать протокол меньшего размера, я бы порекомендовал создать небольшую диаграмму состояний вашего протокола, чтобы проверить, все ли пути приводят к некоторым конечным состояниям (конечный автомат протокола), в некоторых случаях легко пропустить

0 голосов
/ 20 сентября 2011

Протокол - это то, что обменивается при взаимопонимании.Детали протокола определяют, насколько надежно и критически важно ваше приложение.

Способ реализации простого протокола - просто вставить размер кадра в начало пакета.Также данные могут быть асинхронно получены как кусок файлов.Это простая логика разделить их и добавить в очередь обработки.Если у вас фиксированный размер, а не общий размер, просто прочитайте каждые 1024 кадра и считайте его своими.Простой счетчик поможет за это право?

...