Python的Socket知识3:socketserver实现多并发、文件上传下载
2018-02-18 00:00
2041 查看
socketserver内部使用IO多路复用以及“多线程”和“多进程”,从而实现并发处理多个客户端请求的scoket服务端。即,每个客户端请求连接到服务器时,socket服务端都会在服务器是创建一个“线程”或“进程”专门负责处理当前客户端的所有请求。类似于酒店的大堂经理,负责分配服务员给客户。
内部调用流程为:
启动服务端程序
执行 TCPServer.__init__方法,创建服务端socket对象并绑定IP和端口
执行 BaseServeer.__init__方法,将自定义的继承自socketserver.BaseRequestHandler 的类 MyRequestHandle赋值给 self.RequestHandlerClass
执行BaseServer.server_forever 方法,while 循环一直监听是否有客户端请求到达
当客户端连接到达服务器
执行ThreadingMixIn.proceess_request 方法,创建一个“线程”用来处理请求
执行 ThreadingMixIn.proceess_request _thread 方法
执行 BaseServer.finish_request 方法,执行 self.RequseetHandlerClass() 即:执行 自定义 myclass的构造方法(自动调用基类 BaseRequestHandler的构造方法,在该构造方法中又会调用myclass的handle方法),其中,myclass为自定义类。
可参考网址:http://blog.csdn.net/lyin_c/article/details/20478429
socketserver中的ThreadingTCPSever类对象继承关系:
数字代表执行顺序。
但使用socketserver ,写一个类,比如myclass,继承BaseRequestHandler,且自定义类中必须定义handle方法,且方法名称必须为handle。原因是父类中有一个handle什么都没有做,如果自己定义的类不写handle方法,则会去执行父类的handle方法。
案例1:socketserver 简单实现,链接两个客户端
1)thread_socket_sever
写两个客户端,分别为socket_client1和socket_client2
2)socket_client1
3)socket_client2
执行效果:
client5-1
client5-2
sever显示
案例2:上传下载文件1、socket_sever,服务器端
2、ftp_客户端
实现效果:
代码案例链接:
链接:https://pan.baidu.com/s/1c3VBfSs 密码:3q25
链接:https://pan.baidu.com/s/1c3cMzIw 密码:noxl
链接:https://pan.baidu.com/s/1brjQq7P 密码:7wgi
内部调用流程为:
启动服务端程序
执行 TCPServer.__init__方法,创建服务端socket对象并绑定IP和端口
执行 BaseServeer.__init__方法,将自定义的继承自socketserver.BaseRequestHandler 的类 MyRequestHandle赋值给 self.RequestHandlerClass
执行BaseServer.server_forever 方法,while 循环一直监听是否有客户端请求到达
当客户端连接到达服务器
执行ThreadingMixIn.proceess_request 方法,创建一个“线程”用来处理请求
执行 ThreadingMixIn.proceess_request _thread 方法
执行 BaseServer.finish_request 方法,执行 self.RequseetHandlerClass() 即:执行 自定义 myclass的构造方法(自动调用基类 BaseRequestHandler的构造方法,在该构造方法中又会调用myclass的handle方法),其中,myclass为自定义类。
可参考网址:http://blog.csdn.net/lyin_c/article/details/20478429
socketserver中的ThreadingTCPSever类对象继承关系:
数字代表执行顺序。
但使用socketserver ,写一个类,比如myclass,继承BaseRequestHandler,且自定义类中必须定义handle方法,且方法名称必须为handle。原因是父类中有一个handle什么都没有做,如果自己定义的类不写handle方法,则会去执行父类的handle方法。
案例1:socketserver 简单实现,链接两个客户端
1)thread_socket_sever
写两个客户端,分别为socket_client1和socket_client2
2)socket_client1
3)socket_client2
执行效果:
client5-1
client5-2
sever显示
案例2:上传下载文件1、socket_sever,服务器端
2、ftp_客户端
实现效果:
代码案例链接:
链接:https://pan.baidu.com/s/1c3VBfSs 密码:3q25
链接:https://pan.baidu.com/s/1c3cMzIw 密码:noxl
链接:https://pan.baidu.com/s/1brjQq7P 密码:7wgi
相关文章推荐
- python scoket、SocketServer简单实现文件上传下载
- python socket 实现远程执行命令 上传 下载文件
- python实现socket上传下载文件-进度条显示
- python实现socket上传下载文件-进度条显示
- socket 多线程实现文件上传下载
- python实现的简单FTP上传下载文件实例
- Python实现简单的HTTP服务器(支持文件上传下载)
- python paramiko实现多线程远程执行命令、多线程远程上传文件、多线程远程下载文件
- socket 实现文件上传下载
- Java 使用Socket实现文件上传与下载
- SFTP基于Key多进程批量并发上传文件实现案例(python)
- python实现进度条--主要用在上传下载文件
- Python socket上传文件的服务端和客户端实现
- python paramiko模块实现sftp上传下载文件
- 实现socket_client下载socket_server文件
- python socket上传文件的服务端和客户端实现
- python实现的简单FTP上传下载文件实例
- python socket上传文件的服务端和客户端实现
- java使用socket上传文件,实现server端和client端
- python实现支持目录FTP上传下载文件的方法