C Socket學習筆記一

2021-12-29 21:02:11 字數 1792 閱讀 6348

首先我們要了解一下幾點內容:

1、網路中程序之間如何通訊?

2、socket是什麼?

3、socket的基本操作

3.1、socket()函式

3.2、bind()函式

3.3、listen()、connect()函式

3.4、accept()函式

3.5、read()、write()函式等

3.6、close()函式

4、socket中tcp的三次握手建立連線詳解

5、socket中tcp的四次握手釋放連線詳解

6、乙個例子

現階段socket通訊使用tcp、udp協議,相對應udp來說,tcp則是比較安全穩定的協議了。本文只涉及到tcp協議來說socket通訊。首先講述tcp/ip的三次握手,在握手基礎上延伸socket通訊的基本過程。

下面介紹對於應屆生畢業面試來說是非常熟悉的,同時也是最臭名昭著的三次握手:

1 客戶端傳送syn報文到伺服器端,並置傳送序號為x。

2 伺服器端接收到客戶端傳送的請求報文,然後向客戶端傳送syn報文,並且傳送確認序號x+1,並置傳送序號為y。

3 客戶端受到伺服器傳送確認報文後,傳送確認訊號y+1,並置傳送序號為z。至此客戶端和伺服器端建立連線。  

在此基礎上,socket連線過程:

伺服器監聽:伺服器端socket並不定位具體的客戶端socket,而是處於等待監聽狀態,實時監控網路狀態。

客戶端請求:客戶端clientsocket傳送連線請求,目標是伺服器的serversocket。為此,clientsocket必須知道serversocket的位址和埠號,進行掃瞄發出連線請求。

連線確認:當伺服器socket監聽到或者是受到客戶端socket的連線請求時,伺服器就響應客戶端的請求,建議乙個新的socket,把伺服器socket傳送給客戶端,一旦客戶端確認連線,則連線建立。

注:在連線確認階段:伺服器socket即使在和乙個客戶端socket建立連線後,還在處於監聽狀態,仍然可以接收到其他客戶端的連線請求,這也是一對多產生的原因。

下圖簡單說明連線過程:  

下面開始進行**分析了:

伺服器端:tcpserver.cs

複製**

1 using system;

2 using system.collections.generic;

3 using system.linq;

4 using system.text;

5 using system.threading.tasks;

6 using system.net;

7 using system.net.sockets;

8  9 namespace tcpserver

10 71         }

72 }

複製**  

客戶端的**:

複製**

1 using system;

2 using system.collections.generic;

3 using system.linq;

4 using system.text;

5 using system.threading.tasks;

6 using system.net;

7 using system.net.sockets;

8  9 namespace tcpclient

10 ",revstr);

36 37             clientsocket.close();

38         }

39     }

40 }

網路 c socket 學習筆記(一)

那麼c 是怎麼宣告套接字的呢 在宣告之前要加入標頭檔案 include progma comment lib,ws2 32 tcp socket sock socket pf inet,sock sdream,ipproto tcp udp socket sock socket pf inet,so...

C socket學習筆記

mfc程式設計中,習慣使用csocket,而在控制台程式中只能使用socket套接字。若全為mfc,則其通訊比較容易.服務端建立監聽套接字,並監聽 clistensocket clissoc new clistensocket clissoc create 5555,sock stream,127....

C Socket程式設計筆記

1.按慣例先來介紹下socket windows中的很多東西都是從unix領域借鑑過來的,socket也是一樣。在unix中,socket代表了一種檔案描述符 在unix中一切都是以檔案為單位 而這裡這個描述符則是用於描述網路訪問的。什麼意思呢?就是程式設計師可以通過socket來傳送和接收網路上的...