2010-02-22 34 views
0

我一直試圖在我的Flash客戶端和java服務器之間建立連接幾天,但遇到了套接字策略服務器的問題。Flash/AS2套接字策略文件問題

我已經在線閱讀了很多信息(包括關於如何創建一個信息的Adobe指南),但除了在CS3中的「測試電影」選項之外,我仍無法獲得它的連接。

客戶端和服務器的來源相當長,所以我只會試着解釋他們做了什麼。

OK,所以基本上我收到<policy-file-request/>請求在我的Java服務器,然後我送「<cross-domain-policy><allow-access-from domain='*' to-ports='*' /></cross-domain-policy>」(試過無數其他的XML文件),其次是一個空字符(但保持連接打開,試圖關閉它 - 仍然沒有工作)。然而,看起來,在放棄之前,Flash客戶端仍然繼續嘗試連接大約10秒鐘。

我還在java服務器內部設置了一個迷你web服務器,它在發出http樣式的請求時在同一個端口上提供一個網頁,並且這似乎工作,所以它不能成爲一個port-轉發問題。

我也試過Adobe示例端口843服務器,但仍然無法工作。在firefox/safari中訪問html文件時,我可以手動批准連接,並且它可以工作。

我讀到一個套接字連接不需要crossdomain.xml,但已經做了一些嘗試。

你認爲我在這裏可能會出錯嗎?

回答

0

以及我不使用java,但我可能會建議兩個出發點。

首先,檢查是否有雙柯特斯(「)在域名和端口配置的IE replacemento一個問題:在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) 

第二,跟蹤我的應用程序,我發現Flash Player在接收到他的政策文件的答案後會「斷開連接」並重新收回,因此順序如下:

服務器接收到包含msg「policy-文件請求/「 服務器響應策略文件 然後......它斷開連接(!)(?) 然後重新連接(automaticaly)

訣竅是在VB中,我們應該關閉在sock_Close()事件中的插座,像這樣的:

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

末次

希望它能幫助。