最近寫了乙個測試程式,對於tcp方面協議以及套接字介面方面的呼叫有了更進一步的認識。特此記錄下來。
對於監聽套接字,它會有乙個監聽佇列。呼叫listen函式設定,眾所周知,tcp連線需要三次握手,握手成功後,會新增到這個佇列中,所以我們要通過accpet函式及時取出來,如果佇列處於滿狀態,這個時候在呼叫connect函式,服務端會處於等待狀態,連線超時。所以我測試程式併發1000個連線,會出現連線失敗的情況。
當三次握手成功後,伺服器端會將該連線投入就緒佇列中,這個時候呼叫accpet將他快速的取出來,直到返回值為-1,errno為eagain。如果這個時候如果再來乙個連線,但是就緒佇列已經滿。無法正常完成三次握手,服務端直接返回rst包,代表連線超時,所以一定要快速取出來。
基於tcp協議的套接字
簡單版本 一 服務端 import socket 1 買手機 拿到套接字物件,用來鏈結建立鏈結 phone socket.socket socket.af inet,socket.sock stream tcp稱為流式協議sock stream,udp稱為資料報協議sock dgram print ...
基於TCP協議的套接字程式設計
socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。socket模板已經為我們封裝好了,我...
基於TCP協議的套接字程式設計
基於socket通訊的內部演算法,當傳送的訊息為空的時候,接收端不會收到訊息,而傳送端向下執行到recv,兩端出於僵持狀態。所以在傳送端需要有個判斷,如果傳送的為空,則重新輸入傳送內容。socket是應用層與tcp ip協議通訊的中間軟體抽象層,它是一組介面。import socket 買手機 ph...