2010-06-28 3 views
0

내 플래시 응용 프로그램을 내 서버와 통신하려고합니다. 문제는 내 코드가 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로 지정되는 점을 감안,

하여 XMLSocket에 정책 파일의 URL을 변경 : //127.0.0.1 : 1755

자세한 내용은 Adobe's guidelines for policy files를 참조하십시오.

+0

당신의 솔루션도 작동하지 않습니다 :(플렉스를 사용하는 swf 파일 빌드는 연결되지만 아무 것도 보내거나받을 수 없습니다.) Flash Pro Cs5를 사용하여 swf 파일을 빌드하면 코드와 정책 파일은 동일합니다 ... 소켓 정책 파일을 사용했습니다. 상황은 동일합니다. ( – softwaremonster

+0

추적 출력은 무엇입니까? 포트 1755에서 수신 대기하고 소켓 정책을 반환하는 전용 서비스가 있습니까? –

+0

플래시 프로 cs5 추적 괜찮아요. 나는 패킷을 보내고받을 수 있습니다.하지만 플렉스에서 나는 그것을 할 수 없다 ... 나는 C# 서버 [Tcp 서버]에 작성했습니다. 코드 작동 이해할 수 없습니다. Cs5하지만 Flex에는 없습니다. ( – softwaremonster