Python3 网络编程知识点汇总
编程小白也能懂的通俗解释 | 基础概念 + 代码示例 + 实践应用
🌐
📡 核心网络概念
- IP地址 – 设备的”门牌号”(如 192.168.1.1)
- 端口(Port) – 程序的”具体房间号”(0-65535)
- 协议(Protocol) – 通信的”语言规则”
- TCP – 可靠传输(像打电话)
- UDP – 快速传输(像发短信)
- Socket – 网络的”电话插座”,编程的核心接口
- HTTP/HTTPS – 浏览网页的协议
🔌 Socket编程基础
- 创建Socket – 建立通信端点
创建TCP Socket
import socket # 创建TCP Socket tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建UDP Socket udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- 绑定地址 – 告诉系统使用哪个IP和端口
- 监听连接 (服务器端)
- 连接服务器 (客户端)
- 发送/接收数据 – send()/recv()方法
- 关闭连接 – close()方法
📞 TCP编程
- 面向连接、可靠的数据传输
- 服务器端流程:
- 创建socket
- 绑定(bind)地址和端口
- 监听(listen)连接
- 接受(accept)客户端连接
- 收发(recv/send)数据
- 关闭(close)连接
- 客户端流程:
- 创建socket
- 连接(connect)服务器
- 收发数据
- 关闭连接
-
TCP服务器示例片段
# 创建服务器socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('0.0.0.0', 8888)) server.listen(5) # 接受客户端连接 client, addr = server.accept() data = client.recv(1024) # 接收数据 client.send("Hello Client!".encode())
📨 UDP编程
- 无连接、快速但不保证到达
- 适用于实时性要求高的场景(视频通话、游戏)
- 服务器端流程:
- 创建socket
- 绑定地址和端口
- 接收数据(recvfrom)
- 发送数据(sendto)
- 客户端流程:
- 创建socket
- 发送数据(sendto)
- 接收数据(recvfrom)
-
UDP发送数据示例
import socket # 创建UDP Socket udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 发送数据到指定地址和端口 udp_socket.sendto("Hello UDP!".encode(), ('192.168.1.100', 8888)) # 接收数据 data, addr = udp_socket.recvfrom(1024)
🌐 HTTP编程
- requests库 – 最常用的HTTP客户端库
- http.server – 创建简单HTTP服务器
- 常用操作:
- GET – 获取资源
- POST – 提交数据
- PUT – 更新资源
- DELETE – 删除资源
-
使用requests发送GET请求
import requests # 发送GET请求 response = requests.get('https://api.example.com/data') # 检查状态码 if response.status_code == 200: # 打印返回内容 print(response.text) else: print('请求失败,状态码:', response.status_code)
- 处理JSON数据: response.json()
🧰 实用模块
- socket – 底层网络通信
- socketserver – 创建网络服务器框架
- asyncio – 异步网络编程
- http.client – 底层HTTP客户端
- urllib.request – 处理HTTP请求
- requests – 人性化的HTTP库(推荐)
- json – 处理JSON数据
创建简单HTTP服务器
import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("服务器启动,端口:", PORT) httpd.serve_forever()
网络通信流程图
客户端
➡️
路由器
➡️
服务器
客户端发送请求 → 经过网络路由 → 到达服务器处理 → 返回响应
TCP通信需要先建立连接,UDP直接发送数据包