나는 어제 this question을 물었고, 나는 싱글 스레드 파일 서버가 내 필요에 맞을 것이라고 확신했다. 네, 하나의 스레드와 함께, 파일 서버가 꽤 잘 (작은 파일에 대한), 초당 약 300 요청을 처리 할 수있는 문제가 지금은 (내가 사용 FileChannel.transferTo()
) 쓰기 서버에 대한 블록 것입니다 대용량 파일을 처리하는 데는 꽤 시간이 걸리므로 다른 연결이 연결되지 않게합니다.FileChannel.transferTo()는 0 바이트를 계속 전송합니까?
대용량 파일 (약 800KB)을 전송할 때 이 0 바이트을 전송하는 것으로 나타났습니다. 다음과 같이 실패합니다 : java.io.IOException: Try again.
이것은 Android에 있습니다.
루프에 FileChannel.transferTo()
을 넣었으므로 궁극적으로 전체 파일을 전송하기 위해 FileChannel.transferTo()
이 수천 번 실행되는 상황이 발생할 수 있습니다.
제 질문은 무엇입니까? FileChannel.transferTo()
요청한 바이트를 전송하지 못했습니다. 이 문제를 어떻게 해결하고 대용량 파일을 처리 할 때 파일 서버를보다 신속하게 만들 수 있습니까?
IOException이 발생하고 있습니까? – UVM
'java.io.IOException : 다시 시도하십시오 .' 나는 Android에서 테스트를 마쳤습니다. – neevek
[Java NIO SocketChannel.read()와 다중 스레드가 중복] (0120-336-501) – EJP