關於tcp ip中的listen與accept

2021-09-21 18:51:31 字數 501 閱讀 6967

首先需要說明的一點是:

accept()不是監聽,accept()是接受新連線。

listen()是進入監聽狀態,表示願意接收連線請求。

listen之後有連線請求就將其放到佇列中,accept()時把新連線請求從佇列中取出,建立新的socket。

然後就是accept()與listen()是屬於tcp/ip協議的,而在udp/ip協議中,不需要accept()或者listen()來監聽等待。

具體實現方式:

在tcp/ip協議中,先建立乙個套接字(create),然後繫結(bind),listen---->當有資料進來的時候在使用newsock = accept(oldsock,…)的方式建立乙個新的套接字,這樣可以使用這個新的套接字與客戶端進行send和recv操作。

另外,listen()維護兩個佇列,乙個是未完成三次握手的,乙個是已完成三次握手的,accept()是從已完成三次握手的佇列中取出乙個而已!

關於tcp ip的理解

關於tcp ip的深入理解是學習埠 socket程式設計重要依據。介面層 根據目標mac位址 實現網路內部的資料傳輸。網路層 根據目標ip位址 通過更改mac位址,實現網路間的資料通訊。通過介面層和網路層的作用,網際網路上的2臺主機連線上了。應用層 用來產出傳輸的資料。傳輸層 用埠號來標識網路上主機...

關於tcp ip協議

ip協議是在internet上使用的乙個關鍵的協議,又叫做internet協議,通過使用ip協議,可以使internet可以成為乙個允許連線不同型別計算機和作業系統的網路,並且 的資料報中包含了它的源位址和目的位址。雖然電腦中已經有了ip協議,但是這種協議只能保證計算機之間可以收發資料,但是ip傳遞...

linux的Listen呼叫詳解

listen系統可以使一台主機上的乙個tcp socket在某個埠號被動偵聽,等待來自其它主機的tcp socket的連線請求,下面是listen系統呼叫的函式原型 include int listen int s,int backlog 1 backlog是偵聽佇列的長度,在核心函式中,首先對ba...