Java NIO의 SocketChannel을 사용하여 쓰기 : int n = socketChannel.write(byteBuffer);
대부분의 경우 데이터는 한 두 부분으로 전송됩니다. 즉, 데이터가 하나의 시도로 전송 될 수없는 경우, 나머지 데이터가 재 시도된다.Java NIO SocketChannel 쓰기 문제
여기에서 문제는 데이터가 한 번에 완전히 전송되지 않고 데이터를 여러 번 보내려고 할 때 여러 번 시도한 후에도 하나의 문자가 기록되지 않는 경우입니다. 채널, 마지막으로 잠시 후 remaning 데이터가 전송됩니다. 이 데이터는 크지 않을 수 있으며 약 2000 자일 수 있습니다.
이러한 문제의 원인은 무엇입니까? RAM, OS 등과 같은 외부 요인으로 인해 장애가 발생할 수 있습니까?
이 문제를 해결할 수 있도록 도와주세요. 다른 정보가 필요하면 알려주십시오. 감사
편집
: 채널이 실제 쓰기 전에 쓸 수있는 데이터를 제공 할 수 있다면는 NIO SocketChannel에있는 방법이 있나요은 확인합니다. 여기서 완전한 데이터를 쓰려고 시도한 후에 일부 데이터가 채널에 기록되지 않은 경우 나머지 데이터를 쓰기 전에 SocketChannel이 더 많은 데이터를 가져올 수 있는지 여부를 확인할 수 있습니다. 따라서 무의식적으로 여러 번 시도하는 대신이 데이터를 작성하는 스레드가 기다리거나 다른 작업을 수행 할 수 있습니다.
코드를 게시 할 수 있습니까? –