5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 172
|
|||||||||||
1 | |||||||||||
Зависает socket при отключении WIFI23.05.2017, 10:07. Показов 1592. Ответов 13
Метки нет (Все метки)
Добрый день! Столкнулся с проблемой, если выключаю wifi на устройстве server то клиент просто повисает и все. Если закрываю socket то все хорошо(клиент ждет подключения).
точнее не повисает, а останавливается на строчке
0
|
23.05.2017, 10:07 | |
Ответы с готовыми решениями:
13
Клиент/сервер Socket. Ошибка при отключении Asynchronous socket error 10053 при отключении клиента При отключении устройства форма зависает Delphi XE зависает при компиляции проекта (при включенном WiFi) |
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
23.05.2017, 10:12 | 2 |
Arion32, почему у вас в case 2 при выбросе исключения присваивается stm = 2 которое затем затирается идущим дальше кодом stm = 3?
Добавлено через 3 минуты Arion32, попробуйте читать через inStream1.read - по идее из него должно выкинуть либо -1 либо исключение при проблемах
0
|
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 172
|
|
23.05.2017, 11:03 [ТС] | 3 |
0
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
||||||
23.05.2017, 12:53 | 4 | |||||
Arion32, попробуйте так
Добавлено через 2 минуты Arion32, идея в том что бы использовать напрямую поток, а не сканер
1
|
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 172
|
|
23.05.2017, 13:11 [ТС] | 5 |
vxg, подскажите а куда вообще это надо вставлять? В case 2? И / Или вместо case 3?
0
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
23.05.2017, 13:28 | 6 |
Arion32, это должно быть в блоке case 3
1
|
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 172
|
|
23.05.2017, 14:43 [ТС] | 7 |
vxg, попробывал по вашему примеру. Ситуация аналогична сканеру. Если в ручную сокет закрывам на сервере то все хорошо, но если отключаем wifi на сервере то приложуха замирает на case 3 и все.
0
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
23.05.2017, 15:00 | 8 |
Arion32, когда сеть рвет сигнала о закрытии не приходит. по идее когда-нибудь такой сокет должен умереть, но когда.. как вариант - поставьте таймаут на чтение.
0
|
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 172
|
|
23.05.2017, 15:53 [ТС] | 9 |
0
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
23.05.2017, 16:28 | 10 |
Arion32, я думаю так setSoTimeout
0
|
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 172
|
|
23.05.2017, 16:40 [ТС] | 11 |
Сообщение было отмечено vxg как решение
Решение
vxg, Сделал таймер и каждые 5 секунд проверяется есть ли движения в потоке со switch.
Если движения нет то закрываю сокет, и вуаля поток продолжает работать(Походу он ждал закрытие сокета) Спасибо. Добавлено через 1 минуту вот думаю достаточно ли 5 секунд? или меньше сделать?
1
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
23.05.2017, 16:43 | 12 |
Arion32, естественно он ждет сокет, вы ведь сами сказали что он стоит на строке чтения - оно блокирующее если что. принудить к выходу можно через закрытие сокета, вы правы.
Добавлено через 1 минуту Arion32, я бы попробовал все-таки setSoTimeout если речь идет о безусловном прерывании связи при простое. таймаут придется выбирать ориентируясь на задачу и типичную скорость обмена для целевого устройства
0
|
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 172
|
||||||
23.05.2017, 17:00 [ТС] | 13 | |||||
не будет примера?
Добавлено через 12 минут
0
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
23.05.2017, 17:09 | 14 |
Arion32, да
0
|
23.05.2017, 17:09 | |
23.05.2017, 17:09 | |
Помогаю со студенческими работами здесь
14
Зависает ноутбук dell inspiron 15 3000 при установке wifi Зависает socket socket connect зависает Python 3 socket на разных компьютерах по одному wifi Socket зависает на втором Recieve После Socket.Accept() зависает приложение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |