문제

연결 시간 초과 후 (Socket 및 XMLSocket 클래스를 통해) TCP 수신기에 연결하는 데 문제가 있습니다.

서버에 대한 TCP 연결을 유지해야 하는 플래시 애플릿이 있습니다.타이머, 탁구 시스템 등을 사용하여 시간 초과를 구현했습니다.그러나 문제가 있습니다.Socket.connect()를 호출하면 플래시 플레이어(9.0.115 및 그 이전의 많은 버전)는 그 사이에 약간의 시간을 두고 SYN 패킷을 통해 3개의 연결 요청을 보냅니다.그 중 어느 것도 응답하지 않는 경우(예:서버가 다운되었기 때문에) 애플릿이 서버에 연결 [시도]하도록 할 수 없습니다.항상.즉, 애플릿의 수명 내에 있습니다.

명확히 하고/또는 요약하려면:

Socket.connect() 또는 XMLSocket.connect()에 지정된 호스트/포트 쌍의 경우 호출이 실패하면 다른 Socket(또는 XMLSocket) 인스턴스에 대한 후속 connect() 호출이 발생합니다. 플래시 애플릿의 수명 내에서 동일한 호스트/포트 쌍에 대한 무시됩니다.(적어도 패킷 스니퍼를 사용하여 알 수 있는 한.)

나는 수많은 소켓 메소드를 호출하고, 객체를 파괴하고 다시 생성하고, 소켓 풀을 사용하고, 지금은 기억할 수 없는 다양한 다른 메소드를 시도해 보았습니다.모두 소용이 없습니다.

현재 해결책은 JavaScript 호출을 통해 상위 웹페이지에 알리고 내 애플릿을 다시 로드하도록 하는 것입니다.이는 좋은 해결책이 아니며 문제에 대한 해결 방법을 구현하려고 하지 않습니다. 그것 이는 Flash가 소켓 연결을 제대로 처리할 수 없기 때문입니다.

나는 아주 간단한 것을 놓치고 있음에 틀림 없습니다.

어떤 아이디어가 있나요?

1:나는 당신이 실제로 물건을 파괴할 수 없다는 것을 알고 있습니다.나는 그들에 대한 모든 언급을 제거하고 최선을 다하기를 바랍니다.이 경우 명시적으로 GC를 호출하려고 시도하지 않았습니다.(내 생각에는 소켓을 배열 안에 넣고 다음을 사용하려고 시도한 것 같습니다. 삭제.)


예, 연결이 성공하면 예상대로 작동합니다(나중에 연결이 끊어지더라도).

이를 트리거하는 유일한 이벤트는 서버가 전혀 응답하지 않는 경우입니다.이는 마치 Flash가 호스트/포트 조합을 "오프라인"으로 표시하고 애플릿의 수명 동안 더 이상 패킷을 보내지 않는 것과 같습니다.

연결을 적극적으로 거부하는 것으로 의심됩니다(예:호스트가 온라인이지만 포트를 수신하지 않음) 이 문제가 발생하지 않습니다.

소켓으로부터 다른 종류의 오류 메시지나 피드백을 받지 못합니다.

첫 번째 호출이 실패했을 때 동일한 호스트/포트 쌍에 대해 connect()를 두 번 이상 호출한 적이 있습니까?첫 번째 connect()가 실패했다는 것을 어떻게 알았습니까?그리고 후속 connect() 호출 전에 소켓을 재설정하기 위한 작업을 수행했습니까?

도움이 되었습니까?

해결책

해결되지 않은 버그와 관련이 있을 수 있습니다. FP-269 이는 결국 다음과 동일한 근본 원인을 가질 수 있습니다. FP-67.

이 빌드는 현재 공개 베타 릴리스에서 수정되어야합니다. labs.adobe.com

에드윈 웡 - [08/09/23 04:49 오후 ]

나는 당신이 최신 공개 베타 샷...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top