listen的第二個引數詳解

2021-09-25 11:00:40 字數 481 閱讀 4568

之前對於listen的第二個引數的理解,只是停留在它代表伺服器緩衝區佇列的大小層面上,具體並沒有詳細研究過,一次偶然的tcp實驗,發現了很大的bug。

當伺服器端沒有呼叫accept函式時,此時3個客戶端同時連線伺服器,用netstat檢視伺服器狀態,但是當啟動第4個客戶端時,發現客戶端狀態正常,伺服器出現了syn_recv狀態,而不是established狀態,如下圖所示:

這是因為,linux核心協議棧為乙個tcp連線管理使用兩個佇列,分別是:

半連線佇列:用來儲存syn_sent和syn_recv兩個狀態的連線

全連線佇列:用來儲存儲存established狀態的連線

全連線佇列存放三次握手成功的連線。當伺服器不呼叫accept函式,沒有將全連線佇列的請求拿出來,當佇列滿的時候,客戶端的連線就無法再過來,即存放在半連線佇列中,所以此實驗中當第4個客戶端發起連線時,伺服器會處於syn_recv狀態。

注意:全佇列的長度是listen的第二個引數+1

json encode 的第二個引數詳解

下列常量由此擴充套件定義,且僅在此擴充套件編譯入 php 或在執行時動態載入時可用。以下常量表示了 json last error 所返回的錯誤型別。json error none integer 沒有錯誤發生。自 php 5.3.0 起生效。json error depth integer 到達了...

jquery 方法 第二個引數詳解

摘自指令碼之家,如侵刪 關於jquery 方法的第二個引數,有下面這幾種用法 1.jquery selector,context 這種用法,相當於 context find selector 或者 context.find selector 2.jquery html,ownerdocument 文...

jQuery 方法的第二個引數詳解

關於jquery 方法的第二個引數,有下面這幾種用法 1.jquery selector,context 這種用法,相當於 context find selector 或者 context.find selector 2.jquery html,ownerdocument 文件對ownerdocum...