Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Соединение через gprs, Нужно сделать стабильным 
:(
    Опции темы
kokcu
Дата 3.7.2010, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



Здравствуйте, появилась проблема.
Есть клиенты и сервер, сервер представляет собой слушалки на нескольких портах, клиенты соединяются через gprs\edge и шлют сообщения.
Сейчас клиенты устроены так: если один из пакетов не смог послаться то запускаем в отдельном потоке реконект, и его нельзя повторять пока не закончиться этот. 
Все бы хорошо, клиенты подключаются и работают, но бывает что некоторые просто теряются и не пытаются переподключиться.
Кто сталкивался с подобной проблемой? может есть готовые библиотеки?
PM MAIL   Вверх
Skynin
Дата 3.7.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10



Написал свою на такое дело.

Вам надо разобраться почему  "не пытаются переподключиться". 

State diagram of Transmission Control Protocol (TCP):
user posted image

Наверняка потому что сокет "залипает" в состоянии FIN_WAIT / LAST_ACK а запись в такой сокет - не выдает ошибки, но ничего реально послано не будет.

То есть на "воздушных" соединениях, WiFi, GRPS, и т.д. нередка ситуация когда когда один из 2ух сокетов TCP отвалился, а один - долго живой. Казалось бы, быть такого не может, "чтобы у трубы была только одна дырка" - а вот в действительности - бывает.
Боролся пингованием, перед посылкой реальных данных, с указанием частоты пинга (если последний раз посылали данные Х и больше секунд тому, пингануть, если меньше, будем надеяться что за время меньшее Х соединение осталось в рабочем состоянии и просто шлем данные) и максимального времени ответа - если не пришел ответ за время Y - значит точно у нас полу-соединение, а потому 1. закрываем сокет, 2. создаем новый, и 3. если успешно, то шлем данные.

Это сообщение отредактировал(а) Skynin - 3.7.2010, 12:22
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
kokcu
Дата 4.7.2010, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



Спасибо. Значит буду с пингом пробовать.
А правильно делаю что на каждого клиента по тцп слушалке? Есть ли смысл переделывать на 1 удп сервер?
PM MAIL   Вверх
kokcu
Дата 4.7.2010, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



А можно ли слать с тцп клиента на удп сервер? Возможности проверить щас нет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0697 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.