TCP套接字程式設計

2021-08-13 11:21:01 字數 1882 閱讀 6581

網路程式設計又稱為套接字程式設計,為了與遠端計算機進行資料傳輸,需要連線到網際網路,而程式設計中的「套接字」就是用來連線該網路的工具。它本身具有連線的含義,還可以表示為兩台計算機之間的網路連線。

4.呼叫accept函式受理連線請求

基於tcp的服務端、客戶端

tcp伺服器端預設函式呼叫順序:

socket()             建立套接字

bind()                分配套接字位址

listen()               等待連線請求狀態

accept()            允許連線

reac() / write()   資料交換

close()               斷開連線

tcp客戶端預設函式呼叫順序:

socket()              建立套接字

connect()            請求連線

read() / write()    交換資料

close()                斷開連線

1)建立套接字

#includeint socket(int domain,int type,int protocol);
成功時返回檔案描述符,失敗時返回-1。

domain---套接字中使用的協議族資訊

type---套接字資料傳輸型別資訊

protocol---計算機通訊中使用的協議資訊

2)分配套接字的ip位址和埠號

#includeint bind(int sockfd,struct sockaddr *myaddr,socklen_t addrlen);
成功時返回0,失敗時返回-1。

sockfd---要分配位址資訊(ip位址和埠號)的套接字檔案描述符

myaddr---存有位址資訊的結構體變數位址值

addrlen---第二個結構體變數的長度

3)進入等待連線請求狀態

#includeint listen(int sock,int backlog);
成功時返回0,失敗時返回-1。

sock---希望進入等待連線請求狀態的套接字檔案描述符,傳遞的描述符套接字引數稱為伺服器端套接字(監聽)

backlog---連線請求佇列的長度,若為5,則佇列長度為5

服務端處於等待連線請求狀態是指,客戶端請求連線時,受理連線前一直使請求處於等待狀態。

4)受理客戶端連線請求

#includeint accept(int sock,struct sockaddr *addr,socklen_t *addrlen);
成功時返回檔案描述符,失敗時返回-1。

sock---伺服器套接字的檔案描述符  

addr---儲存發起連線請求的客戶端位址資訊的變數位址值,呼叫函式後向傳遞來的位址變數引數填充客戶端位址資訊

addrlen---第二個引數addr結構體的長度,但是存有長度的變數位址。

5)客戶端進行連線

#includeint connect(int sock,struct sockaddr *servaddr,socklen_t addrlen);
成功時返回檔案描述符,失敗時返回-1。

sock---客戶端套接字檔案描述符

serveraddr---儲存目標伺服器位址資訊的變數位址值

addrlen---以位元組為單位傳遞已傳遞給第二個結構體引數servaddr的位址變數長度

TCP套接字程式設計

對於socket不理解的可以檢視 c語言通過socket程式設計實現tcp通訊,linux socket程式設計 socket詳解 先看看程式效果圖 提示如果伺服器,直接通過ctrl z關閉,這樣程式占用的位址不會釋放,需要以下操作 1.ps 檢視程序 2.kill 9 程式pid 強制殺死程序 服...

TCP套接字程式設計!!!

一 socket程式設計的基本函式詳解,其中根據客戶端還是服務端,或者根據使用tcp還是udp,函式的呼叫流程有些許區別 1 socket 函式用於建立乙個套接字,一條通訊線路的端點。3 listen 在服務端程式成功建立套接字和與位址進行繫結之後,還需要準備在該套接字上接收新的連線請求。此時呼叫l...

tcp套接字程式設計

1.tcp協議 傳輸控制協議 面向連線,傳輸可靠,面向位元組流。實現資料可靠傳輸,傳輸靈活但是會造成資料粘包問題。2.tcp客戶端與服務端通訊流程 3.實現 客戶端 1 include tcpsocket.hpp 2 include3 4 void sigcb int signo 5 8 9 int...