listen函式僅會被tcp伺服器端呼叫,主要完成兩件事情1).當socket函式建立乙個套接字時,它被假設為主動套接字,既是將呼叫connect函式發起連線的客戶套接字,而listen函式把乙個未連線的套接字轉換成乙個被動套接字,指示核心應該接受指向該套接字的連線請求。2)listen函式的第二個引數規定了核心應該為相應套接字排隊最大連線個數。
引數backlog:程序處理乙個乙個連線請求的時候,可能還存在其它的連線請求。因為
tcp連線是乙個過程,所以可能存在一種半連線的狀態,有時由於同時嘗試連線的使用者過多,使得伺服器程序無法快速地完成連線請求。如果這個情況出現了,伺服器程序希望核心如何處理呢?核心會在自己的程序空間裡維護乙個佇列以跟蹤這些完成的連線但伺服器程序還沒有接手處理或正在進行的連線,這樣的乙個佇列核心不可能讓其任意大,所以必須有乙個大小的上限。這個
backlog
告訴核心使用這個數值作為上限。
簡單地說,當乙個client與伺服器連線的時候,都知道tcp會經過三次握手,這需要乙個過程,這期間又來了乙個請求也想與伺服器建立連線,但是上乙個還沒有處理完,沒辦法,排隊去吧,當上乙個處理完了,再處理下乙個,這個引數就是指定了這個隊伍的最大長度。
socket程式設計(學習筆記)
tcp ip協議找到目標位址,埠號標識軟體。public static void main string args throws exception 客戶端 public static void main string args 多執行緒通訊 構造執行緒,執行邏輯 thread thread 1 n...
socket網路程式設計筆記
一 基礎知識 xinetd 開源伺服器,監聽指定埠 1000以上 b s模式 http協議,協議頭 資料 方法get 協議頭部分 可選 connect tyoe 回些客戶端的資料的型別 必須 r n 資料tcp面向連線的通訊協議,只能用於端到端的通訊 通過三次握手建立連線,有反饋udp面向無連線的,...
Socket程式設計筆記001
好多天前就想寫的,可是拖延症暫時沒藥醫。socket程式設計過程中,有幾個前提 在unp的前言以及第一章中有提到 1.需要一定的程式語言基礎,例如c語言 2.需要有一定的tcp ip網路協議棧知識,至少知道tcp和udp的連線和釋放 話說udp不需要連線 3.如果可能,最好對作業系統 例如linux...