当前位置: 首页 > news >正文

Python 网络编程 + 多线程 超详细完整版

一、前言

今天我们学习两个Python 后端核心技能

  1. 网络编程:让程序能在网络上通信(客户端/服务端)
  2. 多线程:让程序同时干多件事,提高效率

两者结合,就能写出:多人同时聊天的聊天室


二、网络编程基础(Socket 套接字)

1. 什么是 Socket?

  • 套接字
  • 是计算机之间通信的一套工具
  • 实现:A 电脑发数据 → B 电脑接收

2. 网络编程两大角色

  • 服务端(Server):等待别人连接
  • 客户端(Client):主动连接服务端

3. 必知基础概念

  • IP 地址:电脑在网络中的地址
  • 端口号:程序的编号(0~65535)
  • TCP:可靠传输(打电话)
  • UDP:不可靠(发短信)
  • 我们学习:TCP 编程(最常用)

三、TCP 服务端代码(一步步写)

功能

  • 打开服务
  • 等待客户端连接
  • 接收消息 / 发送消息
# 1. 导入socket库
import socket# 2. 创建socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 3. 绑定IP和端口
server.bind(("127.0.0.1", 8888))# 4. 监听(最大等待数)
server.listen(5)
print("服务已启动,等待客户端连接...")# 5. 等待连接(阻塞)
conn, addr = server.accept()
print(f"客户端已连接:{addr}")# 6. 接收数据
while True:data = conn.recv(1024).decode("utf-8")print(f"客户端说:{data}")# 7. 回复数据msg = input("服务端回复:")conn.send(msg.encode("utf-8"))

四、TCP 客户端代码(一步步写)

import socket# 1. 创建客户端socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2. 连接服务端
client.connect(("127.0.0.1", 8888))# 3. 发送/接收消息
while True:msg = input("客户端说:")client.send(msg.encode("utf-8"))data = client.recv(1024).decode("utf-8")print(f"服务端回复:{data}")

运行步骤

  1. 先运行服务端
  2. 再运行客户端
  3. 双方可以互相发消息

五、网络编程核心方法(必背)

方法 作用
socket() 创建套接字
bind() 绑定IP和端口(服务端用)
listen() 开始监听
accept() 等待连接
connect() 连接服务端(客户端)
send() 发送数据(bytes)
recv() 接收数据
encode() 字符串 → bytes
decode() bytes → 字符串

六、多线程基础(Threading)

1. 什么是多线程?

  • 让程序同时执行多个任务
  • 比如:一边发消息,一边收消息
  • 一边下载,一边听歌

2. 为什么要用多线程?

  • 单线程:只能一件事做完再做下一件
  • 多线程:多个任务同时跑

3. 多线程基本使用

# 导入模块
import threading
import timedef task1():for i in range(5):print("任务1执行...")time.sleep(1)def task2():for i in range(5):print("任务2执行...")time.sleep(1)# 创建线程
t1 = threading.Thread(target=task1)
t2 = threading.Thread(target=task2)# 启动线程
t1.start()
t2.start()

运行后你会看到:任务1 和 任务2 交替执行


七、多线程核心知识点

1. 创建线程

threading.Thread(target=函数名)

2. 启动线程

线程对象.start()

3. 等待线程结束

线程对象.join()

4. 获取线程名字

threading.current_thread().name

5. 主线程与子线程

  • 程序默认运行在主线程
  • 自己创建的是子线程

八、多线程 + 网络编程(重点)

问题

单线程服务端:只能和一个客户端聊天
多线程服务端:可以同时和多个人聊天

多线程服务端(支持多人聊天)

import socket
import threadingdef handle_client(conn, addr):print(f"新连接:{addr}")while True:data = conn.recv(1024).decode("utf-8")if not data:breakprint(f"[{addr}] {data}")conn.send(f"收到:{data}".encode("utf-8"))conn.close()server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("127.0.0.1", 8888))
server.listen(5)
print("多线程服务端已启动,等待连接...")while True:conn, addr = server.accept()# 每来一个客户端,创建一个线程t = threading.Thread(target=handle_client, args=(conn, addr))t.start()

优点

  • 支持多个客户端同时连接
  • 互不干扰
  • 真正的多人聊天室

九、线程共享资源问题(了解)

多个线程同时修改一个变量会出错,需要线程锁

lock = threading.Lock()lock.acquire()  # 加锁
# 操作共享数据
lock.release()  # 释放锁

十、今日重点总结

网络编程

  1. Socket 是网络通信工具
  2. 服务端:创建 → 绑定 → 监听 → 接收 → 收发消息
  3. 客户端:创建 → 连接 → 收发消息
  4. 数据传输必须用 bytes(encode / decode)

多线程

  1. 多线程可以同时执行多个任务
  2. 创建线程:threading.Thread(target=函数)
  3. 启动:start()
  4. 多线程 + Socket = 多人同时在线的服务端

一句话总结

网络编程让程序能联网通信,多线程让程序能同时处理多人请求。

http://www.jsqmd.com/news/592345/

相关文章:

  • Qwen3-4B镜像问题解决:常见错误排查,日志查看一键清空记忆
  • ESP32C3-MINI-1开发板驱动安装全攻略:从CH343驱动到ESP-IDF烧录避坑指南
  • 2026年选购消毒湿巾机,哪个品牌质量好 - 工业设备
  • 2026届最火的五大降重复率平台解析与推荐
  • 2025年TVBOX接口终极指南:离线与在线方案深度解析
  • Intel(R) Wireless-AC 9461适配器WLAN连接故障(错误代码10)的实用修复指南
  • 如何选择ComfyUI-FramePackWrapper模型加载方案?4大维度帮你决策
  • 隐私保护+本地化处理+高效转录:Buzz离线语音识别工具全面解析
  • 基于Vivado的AD9680 FPGA芯片测试程序开发之旅
  • 3个颠覆性成果:开源字体编辑如何实现零成本专业字体开发
  • OpCore-Simplify:突破性自动化黑苹果配置工具,让OpenCore EFI生成从8小时缩短到30分钟
  • 盘点泰安靠谱的注册公司平台,山东峰创科技值得推荐吗? - 工业品网
  • py每日spider案例之某website之sign参数获取(不环境 难度中等)
  • 实战指南:基于快马平台开发可部署上线的企业级qclaw邀请码管理系统
  • 三菱FX3U V50 stm32f407底层源码支持以太网4G模块 FX3U源码V50.0版
  • MobaXterm中文版:一站式远程管理工具效率提升实战指南
  • FLUX.1-dev FP8量化模型:让6GB显存电脑也能玩转AI绘画
  • Python 闭包与装饰器 超详细精讲
  • 3分钟学会:无需电脑的iOS应用直装神器App-Installer终极指南
  • 颠覆式采集:3步解锁百万级数据价值——TikTokCommentScraper开源方案全解析
  • 终极Windows内存管理方案:Mem Reduct深度技术解析与专业调优指南
  • 连锁品牌门店发光标识常见问题解答(2026专家版) - 速递信息
  • 基于OpenSees的梁柱节点建模与十字节点模拟:JOINT2d单元与element beam...
  • ControlNet++架构深度解析:多模态融合机制与SDXL一体化控制网络实现
  • 告别繁琐环境配置,在快马平台一键生成并运行你的python数据处理脚本
  • Python中线程和进程详解:从入门到高并发实战
  • League Akari:英雄联盟智能工具集的技术架构与实践解析
  • 2026年徐州代理记账精准服务公司推荐,口碑好的有几家 - myqiye
  • AIVideo效果展示:AI自动识别文案重点句并强化配音重音的真实效果
  • 深聊不锈钢全屋定制门店,固家十里河闽龙店口碑好服务强 - mypinpai