套接字API是用于TCP / IP和UDP / IP通信的事實標準(即我們所知道的網絡代碼)。但是,它的核心功能之一accept()是不可思議的。借用半正式定義:accept()在服務器端使用。它接受從遠程客戶端創建新的TCP連接的傳入嘗試,并創建與此連接的套接字地址對關聯的新套接字。換句話說,accept返回一個新的套接字,服務器可以通過該套接字與新連接的客戶端進行通信。舊的套接字(在其上accept被調用)保持打開狀態,在同一端口上,偵聽新的連接。accept工作如何?如何實施?在這個話題上有很多困惑。許多人聲稱接受會打開一個新端口,而您通過該端口與客戶端進行通信。但這顯然是不正確的,因為沒有打開任何新端口。實際上,您可以通過同一端口與不同的客戶端進行通信,但是如何進行呢?當多個線程recv在同一個端口上調用時,數據如何知道去向?我想這是客戶端地址與套接字描述符相關聯的東西,每當有數據通過時,recv它就被路由到正確的套接字,但是我不確定。全面了解此機制的內部工作非常好。
- 3 回答
- 0 關注
- 393 瀏覽
添加回答
舉報
0/150
提交
取消