1. 程式人生 > >Python中網絡編程對socket accept函數的理解

Python中網絡編程對socket accept函數的理解

可以關閉 分享圖片 pos pytho clas blog 服務 ket src

在服務器端,socket()返回的套接字用於監聽(listen)和接受(accept),這個套接字不能用於與客戶端之間發送和接收數據。

技術分享圖片

accept()接受一個客戶端的連接請求,並返回一個新的套接字,不同於以上socket()返回的用於監聽和接受客戶端的連接請求的套接字;與此客戶端通信是通過這個新的套接字上發送和接收數據來完成的。

每個連接進來的客戶端,都會通過accept函數返回一個不同的客戶端的socket對象和屬於客戶端的套接字,代碼如圖

技術分享圖片

假設一共有3個客戶端連接到服務器端,那麽在服務器端就移動有4個套接字,第1個是socket()返回的,用於監聽的套接字;其余3個是分別調用3次accept()返回的不同的套接字。

如果已經有客戶端連接到服務器端,不再需要監聽和接受更多的客戶端連接的時候,可以關閉由socket()返回的套接字,而不會影響與客戶端之間的通信。

Python中網絡編程對socket accept函數的理解