bamshad1986 Ответов: 1

Как инкапсулировать пакеты в программировании сокетов с помощью C#


Привет,

Я разработал одноранговый сервер и клиент с помощью программирования сокетов на языке C# в windows. Сервер работает по протоколу TCP и способен обрабатывать несколько клиентов. Так что это похоже на простую чат-программу.

Я хочу определить и внедрить новый протокол через TCP в коммуникацию между сервером и клиентами.

Проблема в том, что я не знаю, как обернуть пакеты в новый заголовок.

Собственно, раньше я делал NTP-клиент на C++ и поэтому делал заголовок с функцией pack на perl. Но в этом проекте, Во-первых, я должен сделать это на c#, а во-вторых, это чат-сервер. Поэтому я использовал переменную char для отправки сообщений, а не двоичный файл.

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

Буду очень благодарен, если кто-нибудь мне поможет.

Что я уже пробовал:

Я погуглил его, но ничего не смог найти!

1 Ответов

Рейтинг:
2

Richard MacCutchan

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


bamshad1986

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

Richard MacCutchan

Это было просто предложение, как вы на самом деле разрабатываете свой протокол, зависит только от вас.