Кибор » Кибор - Интегрированная среда разработки ботов » Отчет о ошибках » проблема с opensocket

Страниц (1): [1]
 

1. Redear - 05 Февраля, 2024 - 16:13:15 - перейти к сообщению
Привет
Задача обеспечить бесперебойный обмен сообщениями между сервером и клиентом
Возникла реальные проблемы
1) Периодически клиент не получает сообщение от сервера, сервер зависает.

На сервере: Функция получения сообщения возвращает=0; Решаю принудительным закрытием / открытие порта и включением повторной прослушки;

на клиенте. если функция получения сообщение = -1, закрытие сокета и повторное, открытие сокета и повторная отправка.

В среднем на 10000 сообщений обмена приходится 15 таких ошибок. Очень хочется свести это к нулю, так как обмен происходит в локальной сети, а когда происходит ошибка происходит подвисание на +- секунду.
2) Более критическая ошибка обнаружилась в следующем. Рандомно после несколько тысяч сообщений, клиент не может открыть сокет на сервере и подвисает. Я пытаюсь решить проблему переподключением к сокету, НО клиент не может переподключиться ровно 12678 раз.
Причем, после ровно 12678 попыток открытия и закрытия сокета, сокет открывается. Это не зависит от времени(если нет sleep(1) около 2 секунд ), можно поставить хоть sleep(10) и тем самым пройдет много времени (~40 сек) за эти попытки. важно только чтобы было сделано 12678 попыток после этого сервер опять заработает.
Важно! Пока делается 12678 попыток интернет на клиенте полностью становится недоступным. Это серьезная проблема.
Прошу помощи.

Я написал, тестовые версии клиента и сервера,
происходит обмен сообщениями (номер сообщения) по порядку, после каждого сообщения, тело сообщения увеличивается на 1; Клиент отправляет 1, ждет 1, отправляет 2, ждет 2 итп.
Также выводится в textout текущие сообщение, полученное сообщение, ошибки отправки, получения, открытия.
Также я методом (тыка ) теста, обнаружил, что если не закрывать сокет, то кол-во ошибок приемки заметно меньше.

Ниже код:
Сервер (Отобразить)



клиент (Отобразить)
2. Redear - 07 Февраля, 2024 - 04:41:38 - перейти к сообщению
уважаемый разработчик, очень жду Вашего комментария, для меня это важно. спасибо!
3. Dantes3000 - 07 Февраля, 2024 - 13:42:06 - перейти к сообщению
 Redear пишет:
обмен происходит в локальной сети


Если это локальная сеть - зачем использовать opensocket? Можно сделать общий доступ к txt файлу(файлам) и обмениться как угодно, ограничиваясь лишь возможностями Win API
4. Redear - 07 Февраля, 2024 - 15:28:52 - перейти к сообщению
этот способ мне не подходит
5. Kibor - 10 Февраля, 2024 - 01:26:26 - перейти к сообщению
На данный момент нет времени заниматься этим вопросом.
Посмотрю как появится время.

Powered by ExBB FM 1.0 Final