2010-06-28 102 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