2014-04-14 2 views
2

클라이언트와 서버를 만들었습니다. 클라이언트를 독립 실행 형 Flash Player에서 실행하면 잘 작동합니다. 하지만 내 브라우저 (wamp 서버 사용)에서 내 localhost에서 실행하면 작동하지 않습니다. (서버 측) 오류 :브라우저에서 서버에 연결할 수 없습니다.

var text:String = socket.readUTF(); 

브라우저를 통해 작동하지 않는 이유를 이해하지 않습니다

Error: Error #2030: End of file was encountered. 
at flash.net::Socket/readUTF() 
at com.TWW::serverAPI/getData()[FILE:64] 

라인 (64)이다.

답변

2

브라우저를 통해 소켓을 사용하면 Flash는 서버로 보내는 내용을 바로 보내지 않습니다.

먼저 연결을 열어 서버에 연결할 수 있는지 물어 봅니다.

<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="YOURLOCALDOMAIN" to-ports="PORT YOUR SERVER IS RUNNING AT" /></cross-domain-policy> 

NULL 바이트 얹는 : 그것은 <policy-file-request/>

서버가 같은 대답해야 보냅니다.

그러면 Flash에서 서버 연결을 닫고 정책에서 액세스 권한을 부여하면 설정이 유지되고 데이터를 보낼 수있는 "실제"연결이 다시 열립니다. blue112로 답변에 따라

More infos here.

+0

내가 그것을 어떻게 할 수 있습니까? – user3099169

+0

서버 측에서 구현해야합니다. 연결하려는 서버는 무엇입니까? – blue112

+0

내 서버, 해당 소켓 서버 **, actionscript3 – user3099169

0

, 여기 내 솔루션입니다 :

… 
while((k = in.read(buff, 0, 1)) > -1) { 
    result += new String(buff, 0, k); 

    // Flash privacy policy 
    if(result.equals("<policy-file-request/>")) { 
     out.write("<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"12345\" /></cross-domain-policy>\0"); 
     out.flush(); 
    } 

    // Process message stuff 
    … 
} 
… 
관련 문제