0

数日前からフラッシュ クライアントと Java サーバー間の接続を確立しようとしていますが、ソケット ポリシー サーバーに問題があります。

オンラインで多くの情報を読みましたが (作成方法に関する Adob​​e ガイドを含む)、CS3 の [テスト ムービー] オプション以外で接続することはできません。

クライアントとサーバーのソースはかなり長いので、それらが何をするのかを説明しようと思います。

<policy-file-request/>OK、基本的にはJavaサーバーでリクエストを受け取り、 「 <cross-domain-policy><allow-access-from domain='*' to-ports='*' /></cross-domain-policy>」(他の多数のxmlファイルを試した)に続いてnull文字を送信します(ただし、接続を開いたままにし、閉じようとしましたが、まだ機能しませんでした)。ただし、フラッシュ クライアントは約 10 秒間接続を試行し続け、接続を断念しているようです。

また、Javaサーバー内にミニWebサーバーをセットアップしました。これは、httpスタイルのリクエストが発行されたときに同じポートでWebページを提供します。これは機能しているように見えるため、ポート転送の問題ではありません.

Adobe の例のポート 843 サーバーも試しましたが、それでも機能しませんでした。firefox/safari で html ファイルにアクセスすると、接続を手動で承認でき、機能します。

ソケット接続に crossdomain.xml は必要ないことを読みましたが、それでも実験しました。

ここでどこが間違っていると思いますか?

4

1 に答える 1

0

私はJavaを使用していませんが、2つの出発点を提案できます。

最初に、ドメインとポートの構成で二重コート (") の置換に問題があるかどうかを確認します。つまり、VB では、実際にこれに chr(34) を使用することがあります。見てください:

sock.SendData "<cross-domain-policy><allow-access-from domain=" & Chr(34) & "*" & Chr(34) & "to-ports=" & Chr(34) & "50505" & Chr(34) & "/></cross-domain-policy>" & Chr(0)

次に、アプリをトレースすると、ポリシーファイルの回答を受け取った後、フラッシュプレーヤーが「切断」され、再接続されることがわかりました。したがって、シーケンスは次のとおりです。

サーバーは "policy-file-request/" というメッセージでリクエストを受け取ります サーバーはポリシー ファイルに応答します... 切断 (!)(?) し、再接続します (自動的に)

トリックは、次のように、sock_Close() イベントでソケットを閉じる必要がある VB にあります。

Private Sub sock_Close()
sock.Close                          ' has to be called
sock.Listen                         ' listen again

サブ終了

それが役に立てば幸い。

于 2010-11-28T07:45:19.747 に答える