【網路編程】TCPIP_1_快速入門
前言
說明:
- demo 基於 Linux。
1. 快速入門
以下步驟簡略了很多細節,但是通過下面的幾個函數就能構建出簡單的TCP/IP網路編程demo了。
原文:李柱明部落格
1.1 服務端編程簡要步驟
網路編程中和接受連接請求的套接字創建過程可整理如下:
- 第一步:調用 socket 函數創建套接字。
- 第二步:調用 bind 函數分配IP地址和埠號。
- 第三步:調用 listen 函數轉換為可接受請求狀態。
- 第四步:調用 accept 函數受理套接字請求。
- 第五步:調用 read、write 讀寫函數進行數據交互。
- 第六步:調用 close 函數關閉套接字。
1.2 客戶端編程簡要步驟
客戶端請求連接簡要步驟:
- 第一步:調用 socket 函數創建套接字。
- 第二步:調用 connect 函數向服務端發送連接請求。
- 第三步:調用 read、write 讀寫函數進行數據交互。
- 第四步:調用 close 函數關閉套接字。
1.3 參考
如 TCP 客戶端和服務端:
部分參考函數及其頭文件(基於linux):
// 第一步:調用 socket 函數創建套接字。
//成功時返迴文件描述符,失敗時返回-1
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
// 第二步:調用 bind 函數分配IP地址和埠號。
//成功時返回0,失敗時返回-1
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);
/* 補充 client 部分 */
//成功時返回0,失敗時返回-1
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
// 第三步:調用 listen 函數轉換為可接受請求狀態。
//成功時返回0,失敗時返回-1
#include <sys/socket.h>
int listen(int sockfd, int backlog);
// 第四步:調用 accept 函數受理套接字請求。
//成功時返迴文件描述符,失敗時返回-1
#include <sys/socket.h>
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
// 第五步:調用讀寫函數進行數據交互。
/* 成功時返回接收的位元組數(但遇到文件結尾則返回 0),失敗時返回 -1
fd : 顯示數據接收對象的文件描述符
buf : 要保存接收的數據的緩衝地址值。
nbytes : 要接收數據的最大位元組數
*/
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t nbytes);
/* 成功時返回寫入的位元組數 ,失敗時返回 -1
fd : 顯示數據傳輸對象的文件描述符
buf : 保存要傳輸數據的緩衝值地址
nbytes : 要傳輸數據的位元組數
*/
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t nbytes);
// 第六步:調用 close 函數關閉套接字。
/* 成功時返回 0 ,失敗時返回 -1
fd : 需要關閉的文件或套接字的文件描述符
*/
#include <unistd.h>
int close(int fd);
參考:
- 《TCP/IP網路編程》
- TCP/IP TCP詳細筆記
- github