Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
Redear
Отправлено: 06 Февраля, 2024 - 00:13:15
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 193
Дата рег-ции: Июль 2022  
Репутация: 0




Привет
Задача обеспечить бесперебойный обмен сообщениями между сервером и клиентом
Возникла реальные проблемы
1) Периодически клиент не получает сообщение от сервера, сервер зависает.

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

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

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

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

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



клиент (Отобразить)

(Отредактировано автором: 06 Февраля, 2024 - 00:21:16)

 
 Top
Redear
Отправлено: 07 Февраля, 2024 - 12:41:38
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 193
Дата рег-ции: Июль 2022  
Репутация: 0




уважаемый разработчик, очень жду Вашего комментария, для меня это важно. спасибо!
 
 Top
Dantes3000
Отправлено: 07 Февраля, 2024 - 21:42:06
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1465
Дата рег-ции: Июнь 2016  
Репутация: 58




 Redear пишет:
обмен происходит в локальной сети


Если это локальная сеть - зачем использовать opensocket? Можно сделать общий доступ к txt файлу(файлам) и обмениться как угодно, ограничиваясь лишь возможностями Win API
 
 Top
Redear
Отправлено: 07 Февраля, 2024 - 23:28:52
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 193
Дата рег-ции: Июль 2022  
Репутация: 0




этот способ мне не подходит
 
 Top
Kibor
Отправлено: 10 Февраля, 2024 - 09:26:26
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




На данный момент нет времени заниматься этим вопросом.
Посмотрю как появится время.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Отчет о ошибках »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by