TCP UDP使用流程

2021-09-24 16:29:44 字數 1928 閱讀 8522

1.服務端 server.c

1.建立套接字

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

引數2:如下

sock_stream (提供雙向可信賴資料流,tcp;   傳送前需要connect()函式來建立連線)

sock_dgram (不連續不可信賴的資料報連線)

sock_seqpacket  (連續可信賴)

sock_raw  (網路協議訪問)

sock_rdm   (可信賴)

sock_packet   (提供和網路驅動程式直接通訊)

引數3:用來指定socket所使用的傳輸協議編號,通常不設定,設為0

伺服器端填充sockaddr結構

1)套接字清零 bzero(&server_addr, sizeof(struct sockaddr_in)); // memset();也可以清零

2)填充協議af_inet、ip位址、埠號

2.繫結ip位址bind(sockfd,server_addr,  sizeof() );

3.監聽listen(sockfd, int num);//num最多監聽數

4.接收客戶端的連線accept(sockfd, client_addr,  sizeof());

5.收發資料send() /  recv(); 或者   read() /  write(); 【對應使用】

6.關閉網路連線   close(accept_fd);

7.關閉套接字  close(sockfd);

2.客戶端 client.c

1.同樣建立套接字 socket();

2.繫結ip位址 bind();

3.設定服務端埠,即初始化struct sockaddr_in結構體

4.連線服務端   connect(sockfd,    server_addr,  sizeof());

5.收發資料

6.關閉套接字 close(sockfd);

1.服務端 server.c

1.建立套接字 socket();

2.初始化sockaddr_in 結構體變數

3.繫結套接字  bind();

4.等待客戶端傳送資料  recvfrom();

5.關閉套接字close();

2.client.c

1.建立socket();

2.初始化sockaddr_in 結構體變數

3.非必要connect();  // 有連線的udp可返回連線錯誤

4.傳送資料  sendto();//  write();

5.接收資料  recvfrom();

6.關閉 close();

tcp/ip 模型和 osi 模型:

osi 模型

應用層

表示層

會話層

傳輸層

網路層

資料鏈路層

物理層

tcp/ip 模型

應用層傳輸層網路互聯層

網路介面層

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

tcp程式設計分為客戶端和伺服器端兩個部分 建立用於監聽的 socket套接字 int socket 建立監聽佇列 int listen 獲取 個客戶端連線,返回連線 socket套接字 int accept int recv 接收資料 int send 傳送資料 int close 關閉連線 建立...

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

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

TCP UDP程式設計

linux tcp udp程式設計 tcp程式設計伺服器端一般步驟 1 建立乙個socket,用函式socket 2 設定socket屬性,用函式setsockopt 可選 3 繫結ip位址 埠等資訊到socket上,用函式bind 4 開啟監聽,用函式listen 5 接收客戶端上來的連線,用函式...