Сокеты ActionScript 3.0 не могут повторно подключиться

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

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

Чтобы прояснить и / или резюмировать:

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

Я пробовал вызывать множество методов Socket, уничтожать и воссоздавать объекты, используя пул Socket и различные другие методы, которые я сейчас не могу вспомнить; все без толку.

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

Должно быть, мне не хватает чего-то очень простого.

Есть идеи?

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


Да, он работает должным образом, если соединение установлено (даже если соединение разрывается позже).

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

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

Я не получаю сообщений об ошибках или других отзывов от Socket.

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

Правильно ли устанавливается соединение, если сервер доступен? Вы получаете какие-либо сообщения об ошибках, если он не работает после трех раз? Я много работал с Sockets и никогда не сталкивался с этой проблемой.

Matt MacLean 14.08.2008 19:19
[UX] Категории и настройки внешнего вида Flash-сообщений
[UX] Категории и настройки внешнего вида Flash-сообщений
Flash-сообщение - это обычный веб-элемент, используемый для отправки короткого сообщения пользователю. Например, на странице входа в систему может...
5
1
2 230
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это может быть связано с нерешенной ошибкой FP-269, которая, в свою очередь, может иметь ту же основную причину, что и FP-67.

This build should be fixed in the current public beta release found on labs.adobe.com

Edwin Wong - [09/23/08 04:49 PM ]

Я бы порекомендовал вам попробовать последняя публичная бета ...

Спасибо, я так и не нашел базу данных об ошибках Adobe. Раньше их можно было отправить много ...

aib 16.10.2008 03:26

Другие вопросы по теме