2012-06-27 3 views
0

나는 플래시 액션 스크립트 3.0을 사용하는 클라이언트 응용 프로그램과 C#을 사용하여 서버 응용 프로그램을 개발했습니다. 브라우저에서 메시지가 표시된 상태에서 정책 파일을 요청하는 플래시 소켓C의 플래시 정책 파일 요청 -

<policy-file-request/> 

모든 것이 정상입니다. 내 서버가이 메시지를 대기하고 클라이언트에 같이있는 정책 파일 문자열을 보내는 :이 캐릭터 라인이이 방법으로 전송되는

public const String POLICY_FILE = "<?xml version=\"1.0\"?>\n" + 
    "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">\n" + 
    "<cross-domain-policy>" + 
    "<allow-access-from domain=\"*\" to-ports=\"*\" />" + 
    "</cross-domain-policy>\u0000"; 

을 :

if (message.Contains("policy-file-request")) 
      { 
       client.Send(Encoding.ASCII.GetBytes(Statics.POLICY_FILE)); 
       return; 
      } 

나는이 것을 확신 일하지만 실제로 무슨 일이 있었는지 모르며 일하지 않기 시작했습니다. 플래시 클라이언트가 서버에서이 메시지를 받으면 연결이 성공적으로 완료되어 모든 것이 어떻게 진행되어야 하는지를 알게되었습니다. 하지만 지금은 플래시 클라이언트 20 초 (플래시 소켓의 시간 제한) 대기 및 보안 예외를

[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"] 

내가 붙어있어 앞으로 이동할 수 없습니다가 발생합니다. 나는 포트 963을 듣고 있는데, 서버 컴퓨터의 정규화 된 이름은 내 네트워크에서 액세스 할 수있는 "mypc.domain.local"입니다. 이 컴퓨터에서 실행되는 IIS가 있으며 여기에 플래시 응용 프로그램이 호스팅됩니다.

http://mypc.domain.local:90/page.html 

내가 내 플래시 응용 프로그램과

mypc.domain.local:963 

서버를 실행의 주소가를 호출하는 방법입니다. 나는 또한이 기계에 종사하고있다. 나는 http://localhost:90/page.html 또는 http://127.0.0.1:90/page.html 페이지를 호출하고 localhost : 963 또는 127.0.0.1:963으로 서버에 연결을 시도했다. 모든 조합에 대해 동일한 결과가 나타납니다.

무엇이 잘못 되었나요? 내 작업 코드가 고장 났을 때 어떻게 바뀌었을까요?

감사합니다.

+0

방화벽? ..... – spender

+0

아니요, 모든 방화벽이 해제되고 swf에서 직접 연결됩니다. 교차 도메인으로 인해 웹 브라우저를 통한 연결 만 설정되지 않습니다. – megusta

+0

http를 사용하고 있기 때문에 메시지의 실제 내용을 보는 데 도움이되는 피들러를 사용해 봅니다. –

답변

0

코드를 추가하지 않고 말하기는 어렵지만 표시 한 내용에 따라 요청이 들어올 때 실제 유효한 HTTP 응답이 아닌 정책 파일의 내용으로 응답합니다. 내 생각 엔 20 초 제한 시간은 HTTP 헤더를 기다리는 것입니다.

가능하면 '수동으로'http를 수행하는 대신 BCL에 이미있는 HTTP 클래스를 사용해보십시오.하지만 직접 소켓 작업을 수행해야하는 경우 디버깅 중에 Fiddler와 같은 것을 사용하십시오. HTTP 프로토콜.

+0

당신은 정책 파일 요청이 HTTP 응답으로 응답을 기다리고 있다는 것을 의미합니까? – megusta