ExiliM писал(а):не совсем понял про идентификатор сессии связи, по какому принципу он будет определяться?
Это из-за непонимания ответа №1, данного Хакером. Вы открываете сессию связи. Вы присваиваете ей порядковый номер. Вы записываете порядковый номер в заголовок пакета. Вы формируете пакет. По Вашему стандарту Вы формируете. Пакет. Ну поймите уж это, наконец!
_________________
Единственное, что хотелось бы добавить к предложению MIT, это сигнатуру вашего протокола. Она должна идти вначале. Чтобы ваша программа сначала читала сигнатуру принятого пакета, и если это что-то левое, сразу отбрасывала.
- Код: Выделить всё
N байт — сигнатура протокола (фиксированное строковое значение (рекомендуется использовать латиницу, чтобы бейсик не городил огород с уникодом)
4 байта — идентификатор сессии связи
2 байта — тип сообщения
4 байта — длина тела сообщения
byte() — тело сообщения
Как-то так:
- Код: Выделить всё
Public Type PROTOKOL
mdpSign as String(8)
mdpSID as Long
mdpMID as Integer
mdpLength as Long
mdpData() as Byte
End Type
Потом присваиваем сигнатуру и отправляем (это серверная часть)
- Код: Выделить всё
Dim Packet as PROTOKOL
Packet.mdpSign = "PROTOKOL"
В клиентской части принимаем и смотрим сигнатуру:
- Код: Выделить всё
if not Packet.mdpSign = "PROTOKOL" then exit sub
_________________
Ха-ха! Кстати! Я только что изобрел протокол PROTOKOL!