第十二周Linux教材第十三章学习笔记——TCP/IP和网络编程

发布时间 2023-11-24 15:45:50作者: 20211115fyq

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请求苏格拉底式挑战