Actionscript flex сокеты и телнет - PullRequest
       12

Actionscript flex сокеты и телнет

1 голос
/ 07 февраля 2010

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

Чтобы дать краткое введение, я хочу прочитать данные из процесса, который выставляет их через сокет. Поэтому, если в оболочке я наберу telnet localhost 8651, я получу XML, а затем соединение будет закрыто (я получаю следующее Connection closed by foreign host.)

В любом случае, я нашел простое учебное пособие онлайн для flex, которое по сути является клиентом telnet, и можно ожидать, что он будет работать, но все следует законам Мерфи, и ничто не работает!

Теперь у меня есть сообщения, которые печатаются в каждом обработчике событий и во всех местах, которые я могу придумать. Когда я подключаюсь к сокету, ничего не происходит, никакой обработчик событий не запускается, даже обработчик подключения или закрытия, и если я делаю следующее, то socket.connected возвращает false! Я не получаю ошибок, попытка поймать поднимает не исключение. Я в растерянности относительно того, что идет не так?

        socket.connect(serverURL, portNumber);
        msg(socket.connected.toString());

Есть ли что-то в telnet, чего я не знаю, и это заставляет его не работать. Что еще интереснее, так это то, что ни одно из событий не было запущено.

Другая интересная вещь заключается в том, что у меня есть некоторый код на Python, который делает то же самое, и он способен вернуть XML!

Ниже приведен код Python, который работает!

  def getStats(host, port):
 sock = socket.socket()
 sock.connect((host, port))
 res = sock.recv(1024*1024*1024, socket.MSG_WAITALL)
 sock.close()
 return statFunc(res)

Так что я спрашиваю вас, что происходит не так !!!!!! Есть ли какая-то внутренняя проблема с тем, как flex обрабатывает розетки?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2010

В целях безопасности хост, к которому вы подключаетесь, должен обслуживать запросы политики Flash-сокета на порту 943 (или на том же порту, на котором вы пытаетесь установить соединение). На этой странице показано, как настроить это на сервере, к которому вы пытаетесь подключиться:

http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

Во время разработки часто удобно добавить SWF-файл в список файлов, которые запускаются в защищенной изолированной программной среде, чтобы избавить от необходимости предоставлять файл политики сокетов.

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

0 голосов
/ 07 февраля 2010

В какой песочнице безопасности вы это используете? если вы запускаете это как приложение flash, встроенное в веб-страницу, то это, скорее всего, нарушение безопасности.

Метод XMLSocket.connect () может подключаться только к компьютерам в том же домен, в котором находится SWF-файл. Это ограничение не распространяется на SWF файлы, работающие с локального диска. (Это ограничение идентично правила безопасности для URLLoader.load ().) Для подключения к серверу работает демон в домене, отличном от того, где SWF находится, вы можете создать файл политики безопасности на сервере что позволяет доступ из конкретных домены.

...