1

telnet 接続からデータを取得するフレックス アプリケーションを作成しようとしていますが、奇妙な問題が発生しています。

簡単に紹介すると、ソケットを介してデータを公開するプロセスからデータを読み取りたいとします。したがって、シェルで入力telnet localhost 8651すると、xml を受け取り、接続が閉じられます (次のようになりますConnection closed by foreign host.) 。

とにかく、基本的には telnet クライアントである flex の簡単なチュートリアルをオンラインで見つけました。これは機能すると予想されますが、すべてがマーフィーの法則に従っており、何も機能しません!

これで、すべてのイベント ハンドラーと考えられるすべての場所にメッセージが出力されます。ソケットに接続しても何も起こらず、接続またはクローズ ハンドラーでさえイベント ハンドラーはトリガーされません。次の操作を行うと、socket.connected は false を返します。エラーは発生しません。catch を試しても例外は発生しません。何がうまくいかないのか途方に暮れていますか?

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

私が知らないtelnetについて何かがありますか、それが原因でこれが機能しません。さらに興味深いのは、どのイベントも発生しない理由です。

もう1つの興味深いことは、同じことを実行する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)

だから私はあなたに何が悪いのか尋ねます!!!!!!!! フレックスがソケットを処理する方法に固有の問題はありますか?

4

2 に答える 2

0

これを実行しているセキュリティ サンドボックスは何ですか? これを Web ページに埋め込まれた Flash アプリケーションとして実行している場合、これはおそらくセキュリティ違反です。

XMLSocket.connect() メソッドは、SWF ファイルが存在する同じドメイン内のコンピューターにのみ接続できます。この制限は、ローカル ディスクから実行される SWF ファイルには適用されません。(この制限は、URLLoader.load() のセキュリティ ルールと同じです。) SWF が存在するドメイン以外のドメインで実行されているサーバー デーモンに接続するには、サーバー上にセキュリティ ポリシー ファイルを作成して、次からのアクセスを許可します。特定のドメイン。

于 2010-02-07T00:46:23.523 に答える
0

セキュリティ上の理由から、接続先のホストは、ポート 943 (または接続を試みているのと同じポート) で Flash ソケット ポリシー リクエストを処理する必要があります。このページでは、接続しようとしているサーバーでこれを設定する方法を示します。

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

開発中は、安全なサンドボックスで実行されるファイルのリストに SWF を追加して、ソケット ポリシー ファイルを提供する必要性を軽減すると便利なことがよくあります。

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

于 2010-02-16T04:01:47.460 に答える