2010-11-24 10 views
1

通常のブロッキングソケットでは、Socket.getOutputStream()。flush()を使用して、TCPパケットを送信するタイミングを部分的に制御できます。 SocketChannelに相当する操作はありますか?Javaノンブロッキングソケットのフラッシュ操作

編集:SocketChannel.write(ByteBuffer src)を呼び出すたびに、少なくとも1つの個別パケットが送信されます。バッファにも1バイトしかありません(Nagleがオフであると仮定します)。

編集:パッケージ - >パケット、スペルが間違って申し訳ありません。

答えて

0

私は最近Socket.getOutputStreamを指摘したように()。)(フラッシュはそれがより多くを送ることができる1つのパケット(ないパッケージ)を送信します)(書き込みなしguarenteeがない、6

しかし、SunのJDKには何もしません以下。あなたが知っていることは、それを処理するためにOSに渡されたことだけです。

1

私はあなたが

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

ような何かを書くことができ、おそらくよりよい解決策があると思います。