世界熱消息:Python網絡編程之socket之send和recv原理剖析

2023-01-13 15:30:50 來源:51CTO博客


(資料圖片僅供參考)

一、認識TCP socket的發送和接收緩沖區

當創建一個TCP socket對象的時候會有一個發送緩沖區和一個接收緩沖區這個發送和接收緩沖區指的就是內存中的一片空間。

二、send原理剖析

send是不是直接把數據發給服務端?

不是,要想發數據,必須得通過網卡發送數據,應用程序是無法直接通過網卡發送數據的,它需要調用操作系統接口,也就是說,應用程序把發送的數據先寫入到發送緩沖區(內存中的一片空間),再由操作系統控制網卡把發送緩沖區的數據發送給服務端網卡

三、recv原理剖析

recv是不是直接從客戶端接收數據?

不是,應用軟件是無法直接通過網卡接收數據的,它需要調用操作系統接口,由操作系統通過網卡接收數據,把接收的數據寫入到接收緩沖區(內存中的一片空間),應用程序再從接收緩存區獲取客戶端發送的數據

四、send和recv原理剖析圖

說明:

發送數據是發送到發送緩沖區接收數據是從接收緩沖區 獲取

五、小結

不管是recv還是send都不是直接接收到對方的數據和發送數據到對方,發送數據會寫入到發送緩沖區,接收數據是從接收緩沖區來讀取,發送數據和接收數據最終是由操作系統控制網卡來完成。

標簽: 發送數據 操作系統 應用程序

上一篇:環球速讀:加載DOM環境
下一篇:全球快訊:如何制作一個羊了個羊游戲5:快速拾取