flex4 socket问题

时间:2010-06-28 22:15:08

标签: flex sockets

我正在尝试将我的Flash应用程序与我的服务器通信。问题是我的代码正在使用Flash Professional,但我已经在Flash Builder上准备了所有使用Flex 4 -SDK的界面。我的代码不适用于Flex Project。

问题不在于安全文件。我无法解决问题。可能的原因是什么?

亲切的问候。

如果需要,我的代码在[在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("------------------");

}

1 个答案:

答案 0 :(得分:0)

您正尝试使用内容类型策略文件来授权套接字连接。您应该使用套接字策略文件。策略文件语法与我记忆中的相同,但是url应该以 xmlsocket:// 而不是 http:// 开头。不应通过http。

提供此文件

此外,主机的域和策略文件地址中的域应完全相同。鉴于您的主机指定为127.0.0.1,请将策略文件URL更改为

的XMLSocket://127.0.0.1:1755

有关详细信息,请参阅Adobe's guidelines for policy files