我不認爲這是一個Netty指定的規則,而是一個UDP協議。爲User Datagram Protocol的維基百科頁面稱:
數據報 - 數據包單獨發送,並檢查 完整性,只有當他們到達。數據包具有明確的界限,在接收到數據包之後 將被兌現,這意味着在接收器處的讀取操作將會產生完整的消息,如其最初發送的那樣。
因此,由於一個完整的數據報將永遠的插座上讀來生產的,它是有道理的管道總是被調用一次,只有一次,在與TCP相反,其中的邏輯傳輸可能是支離破碎,需要多個讀取。
有一個在Netty QOTM example server執行工作的有益和有些相關的說明,指出:
// Allow packets as large as up to 1024 bytes (default is 768).
// You could increase or decrease this value to avoid truncated packets
// or to improve memory footprint respectively.
//
// Please also note that a large UDP packet might be truncated or
// dropped by your router no matter how you configured this option.
// In UDP, a packet is truncated or dropped if it is larger than a
// certain size, depending on router configuration. IPv4 routers
// truncate and IPv6 routers drop a large packet. That's why it is
// safe to send small packets in UDP.
這是可能的可靠性和信息聚集可能由應用程序本身來實現的,在這種情況下,更大的應用程序特定的消息可以通過一個或多個涉及多個管道調用的數據報來構建,以便彙總接收到的數據報,但是根據定義,每個單獨的數據報只會觸發一個管道調用。