2010-06-28 65 views
0

我試圖與我的服務器通信我的Flash應用程序。無論是問題是我的代碼正在使用Flash Professional,但是我已經準備好了使用Flex 4 -SDK的Flash Builder上的所有接口。我的代碼不適用於Flex項目。flex4套接字問題

問題不在於安全文件。我無法解決問題。可能的原因是什麼?

親切的問候。

如果需要,我的代碼在[在FlashPro上工作,但不在Flex上! ]

import flash.net.*; 
import flash.events.Event;var host:String = new String("127.0.0.1"); 
var port:int = 8080; 
var securityFile:String = "http://localhost:1755/.../..../s....xml"; 
var bagli:Boolean = false; 

var socket:Socket = null; 

var veri:String = new String("----"); 

btnGonder.addEventListener(MouseEvent.MOUSE_DOWN, tiklantiEvent); 

function buildSocket():void 
{   
trace("beginning...."); 
    socket = new Socket(); 
    socket.addEventListener(Event.CONNECT, onConnect); 
    socket.addEventListener(Event.CLOSE, onClose); 
    socket.addEventListener(ErrorEvent.ERROR, onError); 
    socket.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
    socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse); 


Security.allowDomain(host); 

Security.loadPolicyFile(securityFile); 


try { 
    socket.connect(host, port); 
    bagli = true; 
    trace("--- connection..."); 

} catch (error:Error) { 

    trace("--- connection failed..."); 
    socket.close(); 
} 
} 


function send(string:String):void { 
    socket.writeUTFBytes(string); 
    socket.flush(); 
} 
function onConnect(event:Event):void { 
    trace("connect"); 
} 
function onClose(event:Event):void { 
    trace("closed"); 
} 
function onError(event:IOErrorEvent):void { 
    trace("connection erron"); 
} 
function onIOError(event:IOErrorEvent):void { 
    trace("data error"); 
} 
function onResponse(event:ProgressEvent):void { 
    var string:String = socket.readUTFBytes(socket.bytesAvailable); 
    trace(string); 
} 


function (sender:Event):void { 
    trace("clicked button...."); 
    buildSocket(); 
    trace("------------------"); 

} 

回答

0

您試圖通過使用內容類型策略文件來授權套接字連接。您應該使用套接字策略文件。策略文件語法與我所記得的相同,但是url應該以xmlsocket://而不是http://開頭。這個文件不應該通過http服務。

此外,主機的域和來自策略文件地址的域應該完全相同。鑑於您的主機被指定爲127.0.0.1,策略文件URL更改爲

的XMLSocket://127.0.0.1:1755

欲瞭解更多詳情,請參見Adobe's guidelines for policy files

+0

您的解決方案也無法正常工作:(我的SWF文件使用Flex構建,但無法接收或發送任何內容。使用Flash Pro Cs5構建swf文件時,它可以工作...代碼和策略文件是相同的...我已經使用套接字策略文件,情況是一樣的:( – softwaremonster 2010-06-29 11:56:11

+0

跟蹤的輸出是什麼?你有一個專門的服務,監聽端口1755並返回套接字策略? – 2010-06-29 15:12:27

+0

在flash pro cs5上跟蹤都沒問題,我可以發送和接收數據包,但是在Flex上,我無法做到這一點...我在C#上寫了一個[Tcp Server]服務器,我無法理解代碼的工作原理Cs5但不是在Flex :( – softwaremonster 2010-06-29 16:58:27