2010-02-07 9 views
0

저는 파이썬으로 작성한 서버가 있으며 Flash의 XMLSocket을 통해 연결하려고합니다. 필자는 여러 대의 비 - 플래시 클라이언트 응용 프로그램에서 성공적으로이 서버를 사용함에 따라이 서버가 제대로 작동하고 있음을 알고 있습니다. 지금 당장은 로컬 디스크에있는 SWF를 사용하여 원격 서버에 연결하려고합니다. 내가 이해하는 바로는, 이것은 SWF가 다른 도메인에 없기 때문에 보안 정책 파일이 필요 없다는 것을 의미합니다. 파일의 보안 샌드 박스 속성이 local-trusted로 설정되어 있으므로 SWF가 서버에 연결하여 SWF에서 데이터를 검색 할 수 있어야합니다. AS 파일의 중요한 코드는 다음과 같습니다.AS3.0을 사용하는 서버에 연결할 수 없습니다. XMLSocket

var xmlSocket:XMLSocket = new XMLSocket(); 
public function MainLogic() { 
    xmlSocket.addEventListener(DataEvent.DATA, onDataReceived); 
    xmlSocket.connect('XXX.XXX.XXX.XXX', XXXX); 
} 
public function onDataReceived(event:DataEvent):void { 
    helloText.text = 'data received' 
} 

서버는 연결이 설정되면 바로 'hello \ 0'문자열을 보내도록 프로그래밍되어 있습니다. 그러나 이것이 성공적으로 발생했다면 동적 텍스트 상자의 기본 텍스트가 '데이터 수신 됨'문자열로 대체되어야합니다. 이는 발생하지 않습니다. SWF 파일이 로컬 임에도 불구하고 여전히 정책 파일이 필요합니까?

답변

1

모든 잠재적 인 error events에 대한 청취자를 추가해야합니다. 그러면 디버깅에서 추측을 많이 받게됩니다. example from the livedocs을 테스트하여 문제를 해결하는 것이 좋습니다. 그들은 다음과 같은 이벤트를 설정합니다 :

xmlSocket.addEventListener(Event.CLOSE, closeHandler); 
xmlSocket.addEventListener(Event.CONNECT, connectHandler); 
xmlSocket.addEventListener(DataEvent.DATA, dataHandler); 
xmlSocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
xmlSocket.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
xmlSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
0

나는 어떤 오류가 발생했는지보기 위해 grapefrukt의 전략에 참여했습니다.

내 생각 엔 보안 오류 일 가능성이 있습니다. 소켓을 통해 연결을 시도 할 때 항상 정책 파일 서버가 필요하다고 생각합니다.

0

최상의 답변이나 의견을 선택할 수 없으므로 미등록 계정으로이 질문을 게시했지만 기본적으로 이벤트 처리기를 추가하면 완벽하게 작동합니다. 보안 오류로 판명 났으므로 정책 파일이 문제 일 수 있습니다. 그러나 훨씬 간단한 해결책은 플래시 플레이어의 설정을 수정하여 특정 폴더 나 파일에 대한 네트워크 액세스를 항상 허용하는 것입니다. 이 사이트의 설정을 수정했습니다 : http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

관련 문제