2009-08-24 4 views
2

플렉스 빌더 3에서 액션 스크립트 3 사용하기소켓의 End Of File은 무엇을 의미합니까?

SOCKET_DATA 이벤트를 처리 할 때 가끔 겉보기에 무작위로 보이는 것처럼 "오류 # 2030 : 파일 끝에 도달했습니다."가 표시되는 경우가 있습니다. socket.readInt()를 호출 할 때. 파일을 읽지 않으므로이 오류의 의미에 대해 혼란 스럽습니다. 나는 소켓에 약간 불만족 스럽다. 감사.

답변

3
소켓을 읽을 때, 그가 닫혀

, 당신은 얻을 것이다 : ...이의 경우 사용 가능한보다 더 많은 바이트를 읽으면 Error #2002: Operation attempted on invalid socket.

파일의 마지막에 오류가 일반적으로 어떤 bytestreams에서 발생이다 파일, 소켓 등 ... 플래시의 경우 Socket 또는 ByteArray에서 읽을 때 발생하며 다른 경우에도 가능합니다 ...

TCP/IP는 패키지 기반이지만 스트림을 에뮬레이트합니다. .. 따라서 당신은 오직 스트림에서 데이터를 읽을 수 있습니다. 그것은 이미 TCP 패키지를 가지고 여러분에게 보냈습니다 ... 확인하기 위해 Socket::bytesAvailable을 확인하십시오. 현재 얼마나 많은 바이트가 있는지 ... 항상 염두에 두십시오. 당신은 한 번의 작업으로 소켓에 쓸 데이터가 여러 패키지에 도착할 수 있습니다 모자, 각 매우 아마 원인이 플래시 플레이어 내가 얻을해야 socketData 이벤트 ...

greetz

back2dos

+0

이 문제가있는 다른 모든 사용자를 추적하면됩니다. 나는 그것이 bytesAvailable이> 0인지 확인했기 때문에 그것이 다른 사람의 코드에서 보았지만 4 바이트가 될 readInt를 수행했기 때문에라고 생각합니다. 따라서 1 ~ 3 바이트의 데이터 만 있으면 readInt는 어떤 식 으로든 가상으로 실패합니다. – AaronLS

7

파일 끝 오류는 일반적으로 소켓의 다른 쪽에서 IIRC가 연결을 끊었다는 것을 의미합니다.

는 최종 외의 이유 파일은 프로그램 내에서 매우 낮은 수준으로, 디스크 및 소켓의 파일이 모두 숫자로 표현되는 것을는 - file descriptor - OS가로 변환하는 것이 파일 또는 소켓 또는 파이프 등을 나타내는 객체.

일반적으로 EOF를 읽었는지 확인하여 이러한 종류의 오류를 피할 수 있습니다. EOF를 읽고 소켓/파일에서 다시 읽으려고하면 EOF 오류가 발생합니다.


업데이트 : the ActionScript 9.0 documentation에 따르면 다른 쪽 끝이 소켓을 닫으면 실제로 닫는 이벤트가 발생합니다.

+0

감사를 트리거합니다 SOCKET_CLOSE 이벤트 또는 다른 쪽이 연결을 닫으면 비슷한가요? – AaronLS

+0

좋은 추측이지만 플래시 플레이어의 경우에는 사실이 아닙니다 ... 내 대답 참조 ... – back2dos