Debian Python网络编程怎么入门
导读:Debian 上用 Python 做网络编程的入门路线 一 环境准备 检查与安装 Python 查看版本:python3 --version 安装:sudo apt update && sudo apt install...
Debian 上用 Python 做网络编程的入门路线
一 环境准备
- 检查与安装 Python
- 查看版本:
python3 --version - 安装:
sudo apt update & & sudo apt install python3
- 查看版本:
- 安装包管理工具
sudo apt install python3-pip
- 常用第三方库
- HTTP 请求:
pip3 install requests - 异步生态:
pip3 install asyncio(Python 3.4+ 内置,按需安装生态工具)
- HTTP 请求:
- 说明
- 多数网络编程所需的核心模块(如 socket、http.server、asyncio)属于 Python 标准库,无需额外安装。
二 核心知识与最小示例
- 关键概念
- TCP/UDP:TCP 面向连接、可靠;UDP 无连接、低开销。
- IP 与端口:IPv4/IPv6 地址标识主机,端口标识进程。
- 阻塞 I/O 与异步 I/O:同步代码直观;异步(如 asyncio)适合高并发。
- 最小 TCP 示例
- 服务端 server.py
import socket HOST, PORT = '0.0.0.0', 12345 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 端口复用 s.bind((HOST, PORT)) s.listen(5) print(f"Server listening on { HOST} :{ PORT} ") while True: conn, addr = s.accept() with conn: data = conn.recv(1024).decode('utf-8') print(f"Received: { data} ") conn.sendall(b"Hello from server") - 客户端 client.py
import socket HOST, PORT = '127.0.0.1', 12345 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(b"Hello, server") reply = s.recv(1024).decode('utf-8') print(f"Server reply: { reply} ")
- 服务端 server.py
- 运行与测试
- 终端 A:
python3 server.py - 终端 B:
python3 client.py - 也可用工具测试:
nc localhost 12345或telnet localhost 12345
- 终端 A:
- 提示
- 出现 “Address already in use” 时,设置 SO_REUSEADDR 可快速复用端口。
三 进阶方向与常用库
- 并发与简化服务器
- 使用标准库 socketserver 快速实现多线程/多进程服务器,适合处理并发短连接。
- 异步网络
- 使用 asyncio 编写高并发服务器,示例要点:
import asyncio async def handle_echo(reader, writer): data = await reader.read(100) message = data.decode() writer.write(data) await writer.drain() writer.close() async def main(): server = await asyncio.start_server(handle_echo, '127.0.0.1', 8888) async with server: await server.serve_forever() asyncio.run(main())
- 使用 asyncio 编写高并发服务器,示例要点:
- HTTP 客户端与服务端
- 客户端:requests 发起 GET/POST 等请求,处理 JSON/表单等数据。
- 服务端:标准库 http.server 快速起一个简易 HTTP 服务,或用 Flask/Django 构建 Web/API。
四 调试与排错要点
- 端口占用
- 重启失败或提示 “Address already in use” 时,创建套接字后设置 SO_REUSEADDR=1 再 bind。
- 本机与外部访问
- 仅本机访问用 127.0.0.1;局域网/公网访问用 0.0.0.0 并确认防火墙放行对应端口。
- 连接与数据
- 客户端与服务端编码一致(如 UTF-8);注意 send/recv 的字节串与缓冲大小(如 1024 字节)。
- 测试工具
- 命令行:
nc -vz 127.0.0.1 12345、telnet 127.0.0.1 12345 - 抓包分析:
sudo tcpdump -i lo -nn port 12345(排查握手、丢包、重传等)。
- 命令行:
五 下一步学习与实践清单
- 协议与数据格式
- 理解 TCP/UDP 差异;在应用层使用 JSON/Protobuf 等格式进行编解码与校验。
- 安全与可靠性
- 启用 HTTPS/TLS;校验输入与边界;为关键服务加入 身份认证与限流。
- 工程化
- 使用 venv 隔离依赖;以 requirements.txt 管理第三方库;加入 日志 与 异常重试。
- 实战小项目
- 基于 socket 的回显/聊天室;基于 asyncio 的并发回显;基于 Flask 的 REST API。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Python网络编程怎么入门
本文地址: https://pptw.com/jishu/767022.html
