Тема: AHK: Проблемы с обработкой данных - AHKsock (WinSock)
Предисловие:
Уже которую тему пишу по поводу проблем с сокетами. Мучаюсь с этим делом примерно полгода. Скрипт раньше работал на костылях, да и сейчас так же. Решил улучшить работоспособность.
Привет, форум.
Есть сервер, есть клиент. Передача, получение, взаимодействие и.т.п.
Использую AHKsock - библиотека которая работает с WinSock.
Каждый пакет перед отправкой на сервер\клиент обрабатывается. А конкретнее:
Первые 8 байт = № пакета
Вторые 8 байт = длина отправляемого сообщения
Все остальные байты - само сообщение.
Примерно оно выглядит так: (весь пакет отправляется в бинарном коде)
01010101 10000001 1000000000000000000
Перейду к сути проблемы..
Когда отправляю пакет, то он может разбиться на несколько фреймов. К примеру, данные в которых содержится информация о пакете(№пакета и длина) и часть сообщения могут отправиться а остальная часть прилетит отдельно. Или смешается с другим пакетом. (это ничего если смешается, уже готова функция, которая это всё разберёт по частям и сохранит пакет, если длина полученного сообщения не совпадёт с первоначальной длиной.)
Есть но - "остальная часть" приходит без информации о пакете и длине. То есть, просто кусок байтов, вырванный из непонятно какого пакета. И предстоит вопрос, а как понять из какого пакета он оторвался?
Я в сокетах сильно не "шарю" и поэтому еще парочку вопросов:
Когда отправляю пакет и он разделятся на фреймы. Допустим два фрейма, то может ли второй пакет влезть между фреймами первого пакета? Если да, то вопрос выделенный выше. Если нет, то думаю надо обрабатывать "остальную часть" как кусок последнего отправленного пакета, так?
P.S. "рылся" на просторах cyberforum - ничего подобного не нашел.