![]() |
Ошибки при пересоединении сокета.
Ситуация следующая. Есть список нескольких профилей, содержащих параметры коннектов к разного рода устройствам.
Есть класс, создающий и обслуживающий эти самые соединения (сокетные). Код AS3:
Возможно ли как-то победить это? |
Там, по-моему, надо каждый раз создать новый экземпляр сокета.
|
Цитата:
Код AS3:
|
Код AS3:
|
Не совсем уверен, но поробуй остановить дальнейшую обработку события об ошибке после обработки его контроллером
Код AS3:
|
2 iflamberg Все меняется. Процедура, как видите, возвращает свежий сокет. Он и становится сендером, для нового профиля. Для этого в "set profile" добавлено:
Код AS3:
2 C4Grey )) Попробую, спасибо! Алогично конечно, но что-то не придумывается ничего. Не спасло. Складывается впечатление, что этот IOError, каким-то непостижимым образом кешируется и "считает", что все остальные профили гиблые. |
Возможно, стоит посмотреть нет ли какой-то ошибки при подключении:
Код AS3:
|
Что интересно, событие CLOSE не приходит. Видимо железки просто его не шлют. Однако сокет я рассоединяю же "вручную".
Код AS3:
try-catch ничего не показал в трейсе. Ей-ей - фантастика какая-то. Непонятно, что даже свежесозданный сокет ведет себя этак странно. |
какаето жуткая проверка
Код AS3:
Код AS3:
|
При наличии сокета, чистим листенеры и при этом если сокет в коннекте - принимаем меры. В чем жуть этой конкретной конструкции?
Буфер естественно чистится, однако, он-то здесь при чем? Цитата:
Имеет ли значение, что это AIR проект? Судя по хелпу, вроде параллельно... |
О событии CLOSE - имел в виду вот так:
Код AS3:
Цитата:
P.S. Еще буфер нужно очищать, как советует chamele0n |
Цитата:
|
Код AS3:
|
2 C4Grey Как вы считаете, OnSenderClose в вашем коде когда нибудь сработает?
Писал ведь уже, что сокет отключается вручную, перед полным его диспозом. И чистка, если flush() подразумевается, тоже делается. Разве что проверю еще буфер, перед удалением сокета. 2 iflamberg Вы абсолютно правы. Повторюсь, проблема возникает, когда какой либо из коннектов (профилей) сгенерит событие ошибки Error #2031: Socket Error, после этого все следующие коннекты генерят эту же ошибку. А вот когда луна в нужной четверти и связь исправна, то даже сокет обновлять нет необходимости. Единственный справляется отменно. |
Цитата:
http://flashgameblogs.ru/uploads/ima.../27/a53d57.jpg Впрочем, сам с удовольствием использую Flash Console наравне с дебагером - любое средство пригодится в определенных условиях. Цитата:
Добавлено через 29 минут Цитата:
P.S. Возможно, это еще один глупый совет, но попробуй подключится по таймеру через секунд 5 - на одном форуме встречал топик с похожей проблемой. |
C4Grey Спасибо! Я сейчас уже вполне в состоянии воспринимать любые советы.
Никак не поддается крепость вражья!)) Добавлено через 25 часов 6 минут :) Спасибо всем! Проблема ликвидирована. |
Напиши, пожалуйста, в чем она заключалась, если не сложно.
|
Почему-то сокет слал событие Error #2031 дважды, с промежутком в несколько миллисекунд. По первому событию переключался профиль, ловил дубль, снова переключался и софтинка сходила с ума. ))
Эти события тащат с собою св-во text, с описанием ошибки и текущим хостом. Вот по этому самому хосту я и отфильтровал повторы в обработчике и шарманка поехала. |
| Часовой пояс GMT +4, время: 00:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.