日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

五分鐘幫您理解Linux網絡核心知識點——Socket和Epoll

來源: 責編: 時間:2023-08-09 23:03:23 320觀看
導讀關于linux網絡相關的基礎知識點,最熱的兩個就是socket和epoll,接下來我就用最簡單的方式把他倆說清楚便于大家理解!SocketSocket 是一種進程間通信的方法,它允許位于同一主機(計算機)或使用網絡連接起來的不同主機上的應用

關于linux網絡相關的基礎知識點,最熱的兩個就是socket和epoll,接下來我就用最簡單的方式把他倆說清楚便于大家理解!A8N28資訊網——每日最新資訊28at.com

Socket

Socket 是一種進程間通信的方法,它允許位于同一主機(計算機)或使用網絡連接起來的不同主機上的應用程序之間交換數據。A8N28資訊網——每日最新資訊28at.com

Socket起源于Unix,而Unix/Linux基本哲學之一就是“一切皆文件”,都可以用“打開open> 讀寫write/read > 關閉close”模式來操作。Socket就是該模式的一個實現,socket即是一種特殊的文件,一些socket函數就是對其進行的操作(讀/寫IO、打開、關閉)A8N28資訊網——每日最新資訊28at.com

Socket實現細節

當有客戶端連接服務端時,服務端 Socket 文件中會寫入這個客戶端 Socket 的文件描述符。進程可以通過 accept() 方法,從服務端 Socket 文件中讀出客戶端的 Socket 文件描述符,從而拿到客戶端的 Socket 文件。A8N28資訊網——每日最新資訊28at.com

程序猿實現一個網絡服務器的時候,會先手動去創建一個服務端 Socket 文件。服務端的 Socket 文件依然會存在操作系統內核之中,并且會綁定到某個 IP 地址和端口上。以后凡是發送到這臺機器、目標 IP 地址和端口號的連接請求,在形成了客戶端 Socket 文件之后,文件的文件描述符都會被寫入到服務端的 Socket 文件中。A8N28資訊網——每日最新資訊28at.com

應用只要調用 accept 方法,就可以拿到這些客戶端的 Socket 文件描述符,這樣服務端的應用就可以方便地知道有哪些客戶端連接了進來。而每個客戶端對這個應用而言,都是一個文件描述符。如果需要讀取某個客戶端的數據,就讀取這個客戶端對應的 Socket 文件。如果要向某個特定的客戶端發送數據,就寫入這個客戶端的 Socket 文件。A8N28資訊網——每日最新資訊28at.com


A8N28資訊網——每日最新資訊28at.com

A8N28資訊網——每日最新資訊28at.com


A8N28資訊網——每日最新資訊28at.com

epoll

與 socket 的交互,最核心的場景就是網絡 IO 的處理, epoll 會協助我們高效完成。我們新建立一個網絡 socket 的時候,交給 epoll 就可以了,當網絡 IO 有數據到來時它會通知我們,當我們要往網絡 IO 寫數據時,epoll 也會自動幫我們發送,本質上epoll實現了IO 多路復用A8N28資訊網——每日最新資訊28at.com

A8N28資訊網——每日最新資訊28at.com

Epoll數據結構如下:A8N28資訊網——每日最新資訊28at.com

· rbr:被 epoll 所管理的所有 socket 都存儲在紅黑樹中。A8N28資訊網——每日最新資訊28at.com

· rdllist:存儲著所有就緒的 socket(所謂"就緒",意思指有網絡數據到來,或者有數據要發送出去。)A8N28資訊網——每日最新資訊28at.com

A8N28資訊網——每日最新資訊28at.com

就緒列表是 epoll 能夠高效的核心,對于每一個就緒的 socket,會直接放入 rdllist 中,epoll_wait 獲取到就緒的 socket 時,直接從 rdllist 中進行獲取就可以了,無需再進行查找。epoll 是基于事件回調機制地,當 epoll 所管理地 socket 有數據到來時,會觸發事件回調函數,將就緒的 socket 放置在 rdllist 中,并且通知 epoll_wait 所在的進程來處理數據。epoll的優點如下:A8N28資訊網——每日最新資訊28at.com

  • 支持海量并發連接。
  • 使用時間復雜度為 O(logn)的紅黑樹管理所有的 socket。
  • 提高 CPU 的使用率,高效地使用 CPU 時間片處理所管理的 socket 連接。
  • 基于事件回調機制處理消息,而不是主動輪詢機制。

除了epoll,內核還提供了select和poll,但是二者效率較差,這里就不再進行介紹了。A8N28資訊網——每日最新資訊28at.com

最后的總結

不同的客戶端與服務端通信通過Socket實現,而epoll使得通信變更加高效!A8N28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5179-0.html五分鐘幫您理解Linux網絡核心知識點——Socket和Epoll

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: CSS 漸變中的顏色空間和色相插值

下一篇: SpringBoot3基礎用法

標簽:
  • 熱門焦點
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • WebRTC.Net庫開發進階,教你實現屏幕共享和多路復用!

    WebRTC.Net庫:讓你的應用更親民友好,實現視頻通話無痛接入! 除了基本用法外,還有一些進階用法可以更好地利用該庫。自定義 STUN/TURN 服務器配置WebRTC.Net 默認使用 Google 的
  • 猿輔導與新東方的兩種“歸途”

    作者|卓心月 出品|零態LT(ID:LingTai_LT)如何成為一家偉大企業?答案一定是對“勢”的把握,這其中最關鍵的當屬對企業戰略的制定,且能夠站在未來看現在,即使這其中的
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 華為HarmonyOS 4.0將于8月4日發布 或搭載AI大模型技術

    華為宣布HarmonyOS4.0將于8月4日正式發布。此前,華為已經針對開發者公布了HarmonyOS4.0,以便于開發者提前進行適配,也因此被曝光出了一些新系統的特性
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • iQOO 11S屏幕細節公布:首發三星2K E6全感屏 安卓最好的直屏手機

    日前iQOO手機官方宣布,新一代電競旗艦iQOO 11S將會在7月4日19:00正式與大家見面。隨著發布時間的日益臨近,官方關于該機的預熱也更加密集,截至目前已
Top 主站蜘蛛池模板: 邵阳县| 民勤县| 滦平县| 洮南市| 山东| 安宁市| 千阳县| 大宁县| 北安市| 安乡县| 盘锦市| 达日县| 双牌县| 奉节县| 宿州市| 洪江市| 特克斯县| 嘉义县| 苏尼特右旗| 永仁县| 洛隆县| 临颍县| 北海市| 怀化市| 龙胜| 莲花县| 阜南县| 石棉县| 乐亭县| 思南县| 延安市| 略阳县| 合肥市| 内江市| 苏尼特左旗| 东方市| 怀来县| 乐东| 巴彦淖尔市| 济源市| 屯门区|