我正在尝试将我的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("------------------");
}
答案 0 :(得分:0)
您正尝试使用内容类型策略文件来授权套接字连接。您应该使用套接字策略文件。策略文件语法与我记忆中的相同,但是url应该以 xmlsocket:// 而不是 http:// 开头。不应通过http。
提供此文件此外,主机的域和策略文件地址中的域应完全相同。鉴于您的主机指定为127.0.0.1,请将策略文件URL更改为
的XMLSocket://127.0.0.1:1755
有关详细信息,请参阅Adobe's guidelines for policy files。