ActionScript 3.0 розетки не смогли повторно

у меня возникают проблемы при подключении (через Сокет и XMLSocket) TCP listener после тайм-аут подключения.

у меня есть флэш-апплет, который необходимо поддерживать TCP-соединение с сервером. Я реализовал время ожидания с помощью Таймеров, стол для пинг-понг системы и др. Однако, есть проблема. После вызова Socket.connect(), flash player (9.0.115 и многие другие конюшни до этого) отправляет 3 запросов на соединение, путем SYN-пакетов, с некоторым интервалом времени между ними. Если ни один из них не ответил (напр. потому что сервер не работает), я не могу заставить апплет [попытаться] подключиться к серверу. Когда-нибудь. То есть, в течение срока службы апплета.

Для уточнения и/или подведем итоги:

Для любого хоста/порт пары уделено Socket.connect() или XMLSocket.connect(), если вызов заканчивается неуспешно, то любое последующее connect() вызовы на любой другой Сокет (или XMLSocket) экземпляры в течение срока службы Флэш-апплет одного хоста/порт пара игнорируются. (По крайней мере, насколько я могу рассказать использовать программу перехвата пакетов.)

я пытался звонить многочисленные методы Сокета, destroying1 и воссоздание объектов, использование пула Розетки, и разные другие методы, я не помню сейчас, но все безрезультатно.

Мое текущее решение, чтобы уведомить родителей веб-страницы с помощью JavaScript, и пусть он перезагрузить мой апплет. Это не красивое решение, и я не собираюсь реализовать обходные пути решения проблемы причины, просто потому, что Flash не может обрабатывать подключения к сокетам правильно.

я, должно быть, упустил что-то очень простое.

какие-то идеи?

1: я знаю, что вы действительно не можете уничтожить объекты; я просто удалить ссылки на них и надеяться на лучшее. Я не пытался вызвать явным образом GC в этом случае. (Хотя я думаю, что я сделал попробуйте положить в Гнездо внутри Массива и использование удалить.)


да, это работает, как ожидалось, если соединение прошло успешно (даже если связь прерывается позже.)

единственное событие, инициирующее это тот случай, когда сервер не отвечает на все; как будто Флэш-отмечает хост/порт сочетание как "офлайн", и не беспокоит отправлять больше пакетов на это всю жизнь апплета.

я подозреваю, активный отказ соединения (напр. хост подключен к сети, но не на прослушивание порта) не вызывают.

я не получаю сообщение об ошибке или отзыв любого из Розетки.

вы когда-нибудь connect() более одного раза на тот же хост/порт пара, после первой неудачной?Как вы знаете, первый connect() не удалось? И перед последующим connect() вызовы, вы сделали что-нибудь для сброса гнездо?

Найдено 2 ответа:

ActionScript 3.0 sockets can't reconnect

http://stackoverflow.com/questions/8939/actionscript-3-0-sockets-cant-reconnect

Посмотреть решение →