Linux網路程式設計 TCP UDP程式設計流程(一)

2021-10-03 04:10:20 字數 2571 閱讀 3501

tcp程式設計分為客戶端和伺服器端兩個部分

建立用於監聽的 socket套接字: int socket();

建立監聽佇列: int listen();

獲取—個客戶端連線,返回連線 socket套接字: int accept();

int recv();接收資料

int send();傳送資料

int close();關閉連線

建立用於和伺服器通訊的 socket套接字: int socket();

與伺服器連線: int connect();

int send();傳送資料

int recv();接收資料

int close();關閉連線

沒有客戶端連線時,accept方法會阻塞

客戶端連線上但是沒有傳送資料,recv方法會阻塞

1. socket();

#include

// 建立套接字,成功返回套接字的檔案描述符(>= 0),失敗返回-1

intsocket

(int domain,int type,int protocol)

;

引數

含義domain

設定套接字的協議簇 :af_unix / af_inet / af_inet6

type

設定套接字的服務型別:sock_stream(tcp) / sock_dgram(udp)

protocol

一般設定為0,表示使用預設協議

2. bind();

// 將sockfd與乙個socket位址繫結,成功返回0,失敗返回-1

intbind

(int sockfd,const

struct sockaddr *addr,socklen_t addrlen)

;

引數

含義sockfd

網路套接字描述符

addr

位址結構,一般使用專用的ipv4的位址結構struct sockadddr_in,再強轉為通用結構

addrlen

socket位址的長度

使用的ip位址不正確,ip位址一定是伺服器程式執行的主機的ip位址,若測試則可用回環位址"127.0.0.1"

使用的埠號不正確

(1)使用了其他tcp程式正在使用的埠號

(2)使用了沒有許可權使用的埠號,如0-1024(知名埠)

3. listen();

// 建立乙個監聽佇列以儲存待處理的客戶連線,成功返回0,失敗返回-1

intlisten

(int sockfd,int backlog)

;

引數

含義sockfd

被監聽的 socket套接字

backlog

表示處於完全連線狀態的 socket的上限,經典值為5

4. accept();

// 從listen監聽佇列中接收乙個連線,成功返回乙個新的連線socket,該socket唯一地標識了被接收的這個連線,失敗返回-1

intaccept

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

;

引數

含義sockfd

執行過listen系統呼叫的監聽socket

addr

用來獲取被接受連線的遠端socket位址

addrlen

指定該socket位址的長度

5. send();&recv();

// 讀取sockfd上的資料

ssize_t recv

(int sockfd,void

*buff,size_t len,int flags)

;// 往socket上寫入資料

ssize_t send

(int sockfd,const

void

*buff,size_t len,int flags)

;

引數

含義sockfd

accept()返回的新的連線 socket

recv:buff&len

分別指定讀緩衝區的位置和大小

send:buff&len

分別指定寫緩衝區的位置和資料長度

flags

引數為資料收發提供了額外的控制,一般為0

6. connect();

// 客戶端需要通過此系統呼叫來主動與伺服器建立連線,成功返回0,失敗返回-1

intconnect

(int sockfd,const

struct sockaddr *serv_addr,socklen_t addrlen)

;

引數

含義sockfd

由socket返回的乙個socket

serv_addr

伺服器監聽的 socket位址(要連線的伺服器的位址資訊)

addrlen

指定這個位址的長度

網路程式設計,tcp udp

架構 程式設計師開發的一種模式 c s架構 客戶端 伺服器模式 b s架構 browser瀏覽器 伺服器模式 b s架構的優勢 統一了應用的介面 網路通訊程式設計 同一臺電腦上兩個py檔案通訊 檔案 兩台電腦 如何通訊?一根網線 多台電腦 如何通訊?交換機 更多台電腦 如何通訊?交換機 路由器 寫乙...

TCP UDP網路程式設計

什麼是計算機網路 網路通訊的兩個要素 ip位址 埠port 通訊協議 tcp實現聊天 tcp檔案上傳實現 初始tomcat udp訊息傳送 udp聊天實現 信件 tcp 連線 建立連線成功 打 udp 傳送了就完事兒 接收 發簡訊 想要達到通訊需要什麼 找到了這個主機,如何傳輸資料?協議 通訊雙方位...

Linux網路程式設計 TCP UDP程式設計流程(三)

建立 socket套接字 int socket 使用bind方法命令 socket套接字,將伺服器端的位址資訊與 socket套接字進行繫結 接收資料 int recvfrom 傳送資料 int sendto 伺服器關閉 int closed 建立 socket套接字 int socket 傳送資料...