![]() |
Событие socketError не приходит при использовании wifi
Привет всем!
Такая проблема. Приложение использует сокетные соединения. Есть ноутбук поключенный к интернету по Wi-Fi. В зоне действия точки доступа Wi-Fi происходит успешное подключение. Когда я с ноутом отхожу на расстояние, где точка доступа уже не работает - не генерируется событие ни socketClose, ни socketError. Т.е. приложение думает что подключено, но на самом деле не может обмениваться информацией. Подскажите, что можно сделать, чтобы решить эту проблему? Добавлено: Прошу прощения, заметил, что это проблема не Wi-Fi. Дело в линуксовом flash плеере. Я поключил ноутбук через проводной интернет и при выдергивании Ethernet кабеля аналогично не генеруются события. |
так и должно быть. для того чтобы сгенерировалось socketClose, необходимо, чтобы на сервере сокет был закрыт (close) или выключен (shutdown). При обрыве линии закрытия соединения не происходит, поэтому клиент и не знает, что линия разорвана. Причем не важно эзернет это, вайфай или оптика.
решение: можно пинговать сервер небольшими сообщениями раз в секунду, например |
Спасибо за совет!
Подскажите а как это сделать красиво? Я представляю это так: 1) Сервер раз в несколько секунд рассылает сообщение всем клиентам. Если клиент не получает положенного сообщения - значит обрыв. 2) Сделать ответ сервера по запросу клиента. Клиет отправляет серверу сообщение, тот отвечает. Если ответ пришел - ок, если нет - обрыв. |
2-ой вариант
|
Спасибо!
|
| Часовой пояс GMT +4, время: 08:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.