2010-11-24 5 views
1

정상적인 블로킹 소켓에서 Socket.getOutputStream(). flush()를 사용하여 TCP 패킷을 보낼시기를 부분적으로 제어 할 수 있습니다. SocketChannel과 동일한 작업이 있습니까?Java 비 블로킹 소켓 플러시 작업

편집 : 내 생각에 SocketChannel.write (ByteBuffer src)를 호출 할 때마다 적어도 하나의 개별 패킷이 보내집니다. 버퍼도 1 바이트 만 있습니다 (Nagle은 꺼져 있다고 가정). 맞습니까?

편집 : 패키지 -> 패킷, 철자가 잘못되었습니다.

답변

0

최근 Socket.getOutputStream을 언급 한 바와 같이().() 플러시가 더 보낼 수 하나 개의 패킷 (안 패키지)를 보내드립니다) (쓰기에는 guarentee이없는, (6)

그러나 Sun의 JDK에 아무것도하지 않는다 이하. 아시다시피 OS를 처리하기 위해 OS로 전달되었습니다.

1

난 당신이

while (buf.hasRemaining()) { 
    socketChan.write(buf); 
} 

같은 아마도 더 나은 솔루션이 쓸 수 같아요.

관련 문제