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