2012-03-09 10 views
0

私はAIR 2.6でサーバーアプリケーションを作成しました。私はサーバー側のServerSocketクラスを使用し、クライアント側はactionscript 3で記述され、Socketクラスを使用します。ローカルIP(127.0.0.1または192.168.0.2)を使用してクライアントをサーバーに接続すると、次のメッセージが表示されます。<policy-file-request/>私はその後、サーバからクライアントに自分のポリシーファイルを送信し、接続は成功しています。air 2.6 serversocketとactionscript 3ソケット接続

グローバルIP(私のISPが割り当てたIP)でクライアントとサーバーを接続すると、同じポリシーファイル要求メッセージが表示されますが、接続を確立できません。港は開港していますが(843、4444、5555)、運がまだありません。私のポリシーファイルは次の通りです:

< ?xml version="1.0"?>< !DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">< cross-domain-policy>< site-control permitted-cross-domain-policies="master-only"/>< allow-access-from domain="*" to-ports="*" />< /cross-domain-policy> 

私はこのポリシー+ String.fromCharCode(0)に等しい文字列型の変数を持っています。

ご協力いただければ幸いです。

+0

ispに接続するためにどのポートを使用していますか? –

+0

あなたはSecurity.allowDomain(ホスト)をやっていますか? とSecurity.loadPolicyFile( "xmlsocket://" + host + ":" + "843"); –

答えて

0

ルーターの設定を確認し、サーバーを実行しているローカルマシンが最初に接続を確立するのに十分なネットワーク特権を持っていることを確認します。これを行う最も簡単な方法は、ルータの設定でDMZ設定を見つけて、サーバマシンのIPアドレスを追加することです。私はこれが問題だとは確信していませんが、あなたは依然としてソケット上でポリシー要求を受け取っていると述べているので...困惑しています。しかし、現時点では、私が実際に行うことができるすべてを提供している詳細は、教育的な推測であり、この時点でDMZは最も可能性の高い原因のように聞こえます。

また、ドメインポリシーでは、ANYソケットを介してANYクライアントに接続することはできません(実動コードで)。これは、セキュリティモデルの目的をすべて破ります。とにかく、それは私が現在の情報を与えることができる最高の答えです。また、ServerSocketとクライアントの接続については、Adobeがこの記事を読むことをお勧めします。

http://www.adobe.com/devnet/air/flex/quickstart/articles/communicating_with_sockets.html#articlecontentAdobe_numberedheader_3