我知道由 5 元組(協議、src IP、src PORT、dst IP、dst PORT)標識的 TCP/UDP 套接字。
我認為,理論上,如果 dst IP:dst PORT 不同,則可以存在同一個 src IP:src PORT 上的兩個 TCP 客戶端套接字。
所以,出于好奇,我做了一個簡單的測驗:
- 在 127.0.0.1:8000 和 127.0.0:8001 上運行 Web 服務器
- 運行向服務器 8000 請求的客戶端套接字程式。
- 在相同的 src IP:src 埠上運行相同的客戶端程式,但請求服務器 8001。
服務器每秒回傳訊息 10 秒以保持連接。
兩個客戶端都是bind()手動編輯的,設定SO_REUSEADDR.
因為無法決定將每個資料包發送到哪個行程,所以我預計回傳訊息的輸出在每個客戶端行程中都會混亂。但是該訊息已正確發送給提出請求的每個客戶。
我無法理解它是如何作業的。我錯過了什么?
uj5u.com熱心網友回復:
你實際上回答了你自己的問題:
我知道由 5 元組標識的 TCP/UDP 套接字(協議、src IP、src PORT、dst IP、dst PORT)
第一個客戶端的 5 元組與第二個客戶端的 5 元組不同,因為“dst PORT”不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/512335.html
標籤:插座tcp
上一篇:Python非阻塞套接字
下一篇:無法理解sockets.io房間
