![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2007
Сообщений: 232
|
Привет всем!
Такая проблема. Приложение использует сокетные соединения. Есть ноутбук поключенный к интернету по Wi-Fi. В зоне действия точки доступа Wi-Fi происходит успешное подключение. Когда я с ноутом отхожу на расстояние, где точка доступа уже не работает - не генерируется событие ни socketClose, ни socketError. Т.е. приложение думает что подключено, но на самом деле не может обмениваться информацией. Подскажите, что можно сделать, чтобы решить эту проблему? Добавлено: Прошу прощения, заметил, что это проблема не Wi-Fi. Дело в линуксовом flash плеере. Я поключил ноутбук через проводной интернет и при выдергивании Ethernet кабеля аналогично не генеруются события. Последний раз редактировалось Роман Вадимович; 02.09.2009 в 14:41. |
|
|||||
|
так и должно быть. для того чтобы сгенерировалось socketClose, необходимо, чтобы на сервере сокет был закрыт (close) или выключен (shutdown). При обрыве линии закрытия соединения не происходит, поэтому клиент и не знает, что линия разорвана. Причем не важно эзернет это, вайфай или оптика.
решение: можно пинговать сервер небольшими сообщениями раз в секунду, например
__________________
я могу стать всем, если только захочу |
|
|||||
|
Регистрация: May 2007
Сообщений: 232
|
Спасибо за совет!
Подскажите а как это сделать красиво? Я представляю это так: 1) Сервер раз в несколько секунд рассылает сообщение всем клиентам. Если клиент не получает положенного сообщения - значит обрыв. 2) Сделать ответ сервера по запросу клиента. Клиет отправляет серверу сообщение, тот отвечает. Если ответ пришел - ок, если нет - обрыв. |
|
|||||
|
2-ой вариант
__________________
я могу стать всем, если только захочу |
|
|||||
|
Регистрация: May 2007
Сообщений: 232
|
Спасибо!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 01:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|