簡體   English   中英

Java非阻塞套接字的刷新操作

[英]Flush operation for Java non-blocking socket

在普通的阻塞套接字中,我可以使用Socket.getOutputStream()。flush()來部分控制何時發送TCP數據包。 SocketChannel是否有等效的操作?

編輯:我的猜測是,每次我調用SocketChannel.write(ByteBuffer src)時,至少會發送一個單獨的數據包,即使緩沖區只有1個字節(假設Nagle已關閉),對嗎?

編輯:程序包->數據包,抱歉拼寫錯誤。

我想你可以寫一些像

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

也許有更好的解決方案。

正如我最近指出的那樣,Socket.getOutputStream()。flush()在Sun的JDK 6中沒有任何作用。

但是,沒有保證write()將發送一個可以發送或多或少的數據包(不是包)。 您所知道的是,它已經傳遞給操作系統進行處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM