TCP IP程式設計 1 基礎知識

2021-09-22 17:21:39 字數 1860 閱讀 6387

1. what is a socket?(什麼是套接字)

storage.

簡單來說,套接字就是網路資料傳輸用的軟體裝置。

舉個生活中的例子:

我們把插頭插到插座上就能從電網獲得電力**,同樣道理,為了與遠端計算機

進行資料通訊,需要連線到internet,而套接字就是用來連線網路的工具。

tcpip套接字網路原理圖:

2. 套接字網路程式設計的步驟

a. 服務端

step1: 呼叫socket函式建立套接字

step2: 呼叫bind函式分配ip位址和埠號

step3: 呼叫listen函式轉為可接收請求狀態

step4: 呼叫accept函式受理連線請求

b. 客戶端

step1: 呼叫socket函式建立套接字

step2: 呼叫connect函式向服務端傳送連線請求

3. 各函式介紹

1) socket()函式

#include #include 

int socket(int domain, int type, int protocol);

這個函式建立乙個協議族為domain,協議型別為type,協議編號為protocol的

套接字檔案描述符。

domain: 協議族, 通常為af_net(tcpip協議族), 乙太網使用pf_inet

type: 通訊型別

sock_stream(流式套接字)

sock_dgram(資料報套接字)

protocol: 協議的特定型別,通常為0

2) bind()函式

#include #include 

int bind(int sockfd, const

struct sockaddr *my_addr, socklen_t addrlen);

這個函式將長度為addrlen的sockaddr結構型別引數my_addr和sockfd繫結在一起

3. listen()函式

這個函式用來監聽埠

#include int listen(int sockfd, int backlog);
4. accept()函式

#include #include 

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

通過accept()函式可以得到成功連線客戶端的ip位址,埠和協議族等資訊,這個資訊是通過

引數addr獲得的。

5. connect()函式 - 客戶端

#include #include 

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

這個函式用來連線網路目標伺服器。

其中,引數ser_addr結構包含了需要連線的目的伺服器的埠和ip位址,以及協議型別。

TCP IP程式設計 1 基礎知識

1.what is a socket?什麼是套接字 storage.簡單來說,套接字就是網路資料傳輸用的軟體裝置。舉個生活中的例子 我們把插頭插到插座上就能從電網獲得電力 同樣道理,為了與遠端計算機 進行資料通訊,需要連線到internet,而套接字就是用來連線網路的工具。tcpip套接字網路原理圖...

TCP IP基礎知識

網路是計算機或類似計算機的裝置之間通過常用傳輸介質進行通訊的集合。通常,傳輸介質是絕緣的金屬導線,它用來在計算機之間攜帶電脈衝,但是闡述介質也可以是 線,或者無線網路。網路協議就是一套通用規則,用來幫助定義複雜資料傳輸的過程。邏輯編址 路由選擇 名稱解析 錯誤控制和流量控制 應用支援tcp ip協議...

tcp ip基礎知識

tcp ip是網際網路相關的各類協議族的總稱。tcp ip的分層管理 分層的優點 如果只有乙個協議在網際網路上統籌,某個地方修改就要把所有的部分整體換掉,採用分層則只需要改變相應的層。把各個介面部分規劃好,每個層次的內部設計就可以自由改動了 按層次分為四層 應用層 傳輸層 網路層和資料鏈路層。應用層...