python3 socket threading fork 多线程+多进程 简单实例
这是前两篇的地址,可以去看代码解释 https://blog.csdn.net/y363893017/article/details/105676878 https://blog.csdn.net/y363893017/article/details/105695328 首先上本机实测截图 如果对linux基础命令都不太熟悉的话,那就先学习基础命令吧,要不然你也不清楚我敲这几个简单的命令是为啥子 下面上服务端的代码 #! /usr/bin/env python3 # -*- coding:utf-8 -*- import socket import threading import pre Python3的Socket编程结合Threading和Fork技术可以创建高效的并发服务器,允许同时处理多个客户端请求。本实例展示了如何在Python3中实现一个多线程、多进程的文件服务器,允许用户上传文件。以下是对相关知识点的详细说明: 1. **Socket编程**: Socket是网络通信的基本组件,提供进程间通信的能力,使一台计算机上的程序能与另一台计算机上的程序进行通信。在Python中,`socket`库提供了创建和操作Socket对象的方法。 2. **多线程(Threading)**: 在Python中,使用`threading`模块可以创建和管理线程。线程允许程序在同一时间执行多个任务,提高了程序的并发性。在这个例子中,每个上传文件的请求都在一个新的线程中处理,确保服务器可以同时处理多个上传请求。 3. **多进程(Fork)**: `os.fork()`函数用于创建新的进程。在Unix/Linux系统中,它可以复制当前进程,形成父子进程关系。在服务器中,如果线程不足以处理大量并发请求,可以使用多进程来提高并发能力。然而,此示例并未直接使用`os.fork()`,而是主要使用了多线程。 4. **错误处理**: `pretty_errors`模块提供了一个友好的错误输出界面,使得错误信息更加易读。在开发阶段,这有助于快速定位问题。 5. **文件操作**: 文件操作在本例中至关重要,服务器需要接收并保存上传的文件。`open()`函数用于打开文件,`write()`方法写入数据,`close()`方法关闭文件。文件路径通过`os.path.join()`构建。 6. **数据传输格式**: 服务器接收文件名和大小的数据以JSON格式传输,利用`json`模块进行编码和解码。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 7. **TCP协议**: TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在这个例子中,服务器首先接收文件名和大小的长度,然后接收实际的数据,确保数据的完整性和顺序。 8. **日志记录**: 使用`logging`模块记录服务器活动,如文件上传信息,这有助于调试和监控服务器状态。`logging.basicConfig()`用于设置日志的基本配置,包括日志级别、格式和输出文件。 9. **信号处理**: 虽然在给出的代码片段中未直接展示,但`signal`模块可用于处理操作系统发送的信号,例如用于优雅地关闭服务器。 10. **时间操作**: `time.sleep()`函数用于暂停程序执行一段时间,可能用于避免过于频繁的操作导致的性能问题或资源占用过多。 总结来说,这个实例展示了如何在Python3中使用Socket、多线程以及日志等工具创建一个简单的文件服务器,能够接收并存储多个客户端上传的文件。通过多线程处理并发请求,提高了服务器的响应能力。注意,虽然示例没有使用多进程,但在实际应用中,根据负载情况,结合多线程和多进程可以进一步优化服务器性能。
- 粉丝: 6
- 资源: 959
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- mmexport1732452246811.png
- Python毕业设计基于物品的协同过滤算法实现图书推荐系统项目源码(高分项目)
- 软考(中级-软件设计师)知识点汇总与解析
- Desktop (2).zip
- 考研冲刺模拟试题50道及解析
- 11月美宝莲专卖店店内海报 店内海报完稿310mmX360mm-op.ai
- Python 中实现十大排序算法
- 基于 Java 实现的24点卡牌游戏课程设计
- 基于ssm台球俱乐部管理系统 框架html + css + jquery + jsp + java + ssm + MySQL 用户类型 管理员 admin 123456 普通用户 002 0
- 纸中世界-跳跃游戏.sb3
评论0