簡體   English   中英

Java中的UDP數據包路由

[英]UDP Packet route in Java

我有一個考慮udp數據包壽命/路由的問題。 我有一個簡單的客戶端服務器UDP方案,在客戶端具有發送調用,在服務器端具有接收調用。 假設發送方法被調用,而數據包實際上到達了另一端,但是服務器的代碼執行尚未到達接收方法調用。 那個時候那個包裹發生了什么。 現在,我嘗試通過簡單的命令輸入提示符在接收調用之前停止執行,稍等片刻,然后繼續執行,並注意到已接收到數據包。 您能解釋為什么會發生這種情況嗎,就像它緩沖在另一個OSI級別上一樣嗎?

提前致謝。

每個TCP或UDP套接字都有一個發送緩沖區和一個接收緩沖區。 您的數據報在發送器處排隊進入發送緩沖區,然后被發送,然后在接收器處排隊進入接收緩沖區,然后從那里讀取數據。

NB 與它無關。 TCP / IP不遵循OSI模型。 它有自己的先前模型。

“ receive”方法調用未接收到數據包。 如果該端口有一個UDP套接字“打開”,則表示已分配了緩沖區空間,這是NIC + OS放置數據的地方。 當您將其稱為“接收”時,它只會出現在那里,如果那里有任何東西,則它會假裝剛剛收到它。

我應該補充一點,如果緩沖區為空,則接收調用的確進入阻塞狀態,等待操作系統通知某物已到達。

暫無
暫無

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

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