TCP/IP和网络编程
13.1 网络编程简介
Linux网络编程是指在Linux操作系统环境下进行网络应用程序的开发。这种类型的编程通常涉及使用套接字(sockets)API,该API允许程序通过网络进行通信。
13.2 套接字
套接字是网络编程的基本构建块。套接字是一种通信机制,通过套接字,程序可以通过网络发送和接收数据。Linux提供了一套套接字API,包括socket创建、bind绑定、listen监听、accept接受连接、connect连接等函数。
13.3 地址族和协议
在套接字编程中,地址族(Address Family)用于指定套接字的寻址格式,协议(Protocol)则指定套接字使用的通信协议。常见的地址族包括AF_INET(IPv4)和AF_INET6(IPv6),常见的协议包括SOCK_STREAM(流套接字,通常使用TCP)和SOCK_DGRAM(数据报套接字,通常使用UDP)。
13.3 创建套接字
使用socket()
函数创建套接字。
#include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol);
13.4 绑定地址
使用bind()
函数将套接字与特定的IP地址和端口号绑定。
#include <sys/socket.h> #include <netinet/in.h> int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
13.5 监听连接
使用listen()
函数开始监听传入的连接请求。
#include <sys/socket.h> int listen(int sockfd, int backlog);
13.6 接受连接
使用accept()
函数接受客户端的连接请求。
#include <sys/socket.h> int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
13.7 连接到服务器
对于客户端程序,使用connect()
函数连接到服务器。
#include <sys/socket.h> int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
13.8 数据传输
使用send()
和recv()
等函数在套接字之间传输数据。
#include <sys/types.h> #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t recv(int sockfd, void *buf, size_t len, int flags);
13.9 关闭套接字
使用close()
函数关闭套接字。
#include <unistd.h> int close(int sockfd);
13.10 教材代码实践
13.14代码实践
https://www.cnblogs.com/20211115fyq/p/17845032.html
13.15代码实践
https://www.cnblogs.com/20211115fyq/p/17853909.html
向ChatGpt请求苏格拉底式挑战