2011-10-03 107 views
1

對不起,我的英語不好。打開的SWF文件比套接字

我有以下問題:

我有一個FLA文件,與Socket類的作品。有一臺服務器(用Delphi XE編寫,但沒關係)。我從.fla連接到它。 當我在Flash Professional CS5中執行.fla時,一切正常。但是,當我試圖從資源管理器中執行導致瑞士法郎(Win 7的時,Flash Player 10)我得到了一個錯誤:

SecurityError: Error #2010: Local-with-filesystem SWF files are not 
permitted to use sockets. at flash.net::Socket/internalConnect() at 
flash.net::Socket/connect() at payterminal::TLogger() at 
payterminal::TMainTerminalClass() at 
testterminal_fla::MainTimeline/frame1() 

插座連接到服務器,如下所示:

Sock.connect(「127.0 .0.1',5243);

我試圖改變設置在「本地回放安全性」,「文件 - >發佈設置」爲「只訪問網絡

好的Flash播放器啓動時沒有錯誤,但它向​​服務器發送以下信息。:

<policy-file-request/> 

後此套接字連接關閉。

我還試圖用該方法的Security.allowDomain(),但它並沒有取得任何積極成果。

我嘗試過另一種方法。該服務器有兩個偵聽套接字。在端口843當此插口收到郵件策略的文件請求第一次聽它發送到.swf文件跨域文件,像這樣:

<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM 
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <!-- Policy 
file for xmlsocket://socks.mysite.com --> <cross-domain-policy> 
    <allow-access-from domain="*"/> 
</cross-domain-policy> 

它之後的插座(843)關閉。 但第二個偵聽套接字獲得相同的信息:。

畢竟,我的.swf在Flash Player中仍然是打開的,沒有錯誤,但套接字連接沒有發生。 我嘗試了不同的crossdomain-files,但是我所有的嘗試都讓我得到了相同的結果。

這就是我的問題。我期待着你的幫助。謝謝。

回答

1

user976479這是完全正常的行爲。
Flash Player將首先嚐試獲取端口843上的主xml策略文件,如果未找到主設備,則嘗試5243。
一旦服務器響應跨域Flash Player的請求,將關閉連接(始終)。
我使用以下crossdomain.xml作爲套接字服務器。
記得有一次在域策略收到你必須有flash播放器重新連接第二次。第二次你不會被斷開。

<?xml version="1.0" encoding="UTF-8" ?> 
    <cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd"> 
    <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy> 

最後一件事。 使用高於10k的端口,因爲較低的端口通常保留給其他應用程序,並可能與此衝突。

+0

作爲一個側面說明,讓我補充一點,當服務器發送請求「<策略的文件請求/>」這是要求的crossdomain在那個時候,你需要用crossdomain策略做出迴應,正如我用我發佈的xml所陳述的那樣。之後,客戶端套接字將斷開連接並且客戶端將不得不重新連接到服務器。只有在那個時候你才能通過套接字發送請求。我建議閱讀主策略文件是什麼。我個人保留crossdomain.xml在我使用的每個端口上。 –

0

跨域文件沒有問題。

Flash播放器的安全功能不允許本地(file://協議)文件訪問互聯網。要在瀏覽器中測試您的swf,您必須將其上傳到服務器,然後對其進行測試。

或者,您可以下載服務器以安裝在本地計算機上進行測試。 我使用wampserver

編輯:由於您已經運行本地服務器,請嘗試上傳到那。然後訪問您的瑞士​​法郎作爲http://127.0.0.1/mySwf.swf

+0

Flash播放器的安全功能不允許本地(文件:\\域)。文件訪問互聯網????????真?在發佈之前閱讀您所輸入的內容。 –

+0

默認情況下,Flash會將所有本地運行的SWF放入本地文件系統Sandbox中,這將阻止該SWF進行任何網絡調用。但是,您可以在編譯時選擇不同的沙箱。安全指南:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html – meddlingwithfire

+0

@The_asMan你可能會修正文件:不是完全的張貼//協議,:\\域到文件不必要的評論.. –