Python成长笔记 - 基础篇 (九)

创建一个socketserver 至少分以下几步:

  1. First, you must create a request handler class by subclassing the BaseRequestHandlerclass and overriding its handle() method; this method will process incoming requests.   
  2. Second, you must instantiate one of the server classes, passing it the server’s address and the request handler class.
  3. Then call the handle_request() orserve_forever() method of the server object to process one or many requests.
  4. Finally, call server_close() to close the socket.

1、自己创建一个请求处理类,

2、自己实例化一个TCP server ,并且传递server ip 和你上面创建的请求处理类

3、

import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):

"""

The request handler class for our server.

It is instantiated once per connection to the server, and must

override the handle() method to implement communication to the

client.

"""

def handle(self):

# self.request is the TCP socket connected to the client

while True:

try:

self.data = self.request.recv(1024).strip()

print("{} wrote:".format(self.client_address[0]))

print(self.data)

self.request.send(self.data.upper())

except ConnectionAbortedError as e:

print("err",e)

break

if __name__ == "__main__":

HOST, PORT = "localhost", 1111

# Create the server, binding to localhost on port 9999

server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)

server.serve_forever()

ThreadingTCPServer支持多线程

4、每个用户单独字典

5、在linux上运行

7、mod5验证

8、百分比

9、断点续传:暂停时将已传文件大小(字节)存在临时文件中,续传时读取临时文件

时间: 2024-10-29 19:44:08

Python成长笔记 - 基础篇 (九)的相关文章

Python成长笔记 - 基础篇 (十一)

回顾: 线程:资源的集合:内存共享,两个或多个线程同时修改一份数据时,造成结果可能不正确,必须加锁 进程:运行的最小单元 守护进程:在start之前设置setDemo() 队列queue:作用解耦,使程序之间是实现松耦合,提高处理效率 FIFO:先进先出 LIFO:后进先出 队列中的数据使用完就没了(消费者生产者模型) 事件event:(红绿灯模型) python中的多线程是一个假象,我们是利用它上下文切换 io操作不占用CPU,计算操作占用CPU, python中大量的计算反而会使程序变得更慢

Python成长笔记 - 基础篇 (十)

本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 ssh ssh_sftp SSH密钥 RSH -非对称密钥验证 公钥:public key 私钥: privat key 10.0.0.31 ----连接----> 10.0.0.41 私钥 公钥 10.0.0.31 生成密钥对ssh-keyg

Python成长笔记 - 基础篇 (七)python面向对象

三大特性: 1.封装:在类中对数据赋值.内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法 2.继承:一个类可以派生出子类,在父类中定义的属性.方法会自动被子类继承 # class People:#经典类 class People(object):#新式类 def __init__(self,,age): self.name = self.age = age def eat(self): print('%s is eating' %self.name) def wo

Python成长笔记 - 基础篇 (三)python列表元组、字典、集合

本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码   一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 names = ["Wang","HouZi1","NiuNiu","ZhouYi","HouZi2",[1,2]] 可以通过列表角标的方式去获得list中的值 print(names)print(nam

Python成长笔记 - 基础篇 (四)函数

1.面向对象:类(class) 2.面向过程:过程(def) 3.函数式编程:函数(def)----python 1.函数:http://egon09.blog.51cto.com/9161406/1834777 编程语言中函数定义:函数是逻辑结构化和过程化的一种编程方法. 12345678910111213 python中函数定义方法: def test(x): "The function definitions" x+=1 return x def:定义函数的关键字test:函数名

Python成长笔记 - 基础篇 (二)python基本语法

Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜. Python缩进 Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯.并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字.增加缩进表示语句块的开始,而减少缩进则表示语

Python成长笔记 - 基础篇 (十四)--堡垒机

堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且只能严格按守卫的分配进入指定的建筑,且每个建筑物还有自己的权限访问控制,不同级别的人可以到建筑物里不同楼层的访问级别也是不一样的.还有就是,每个进入城堡的人的所有行为和足迹都会被严格的监控和纪录下来,一旦发生犯罪事件,城堡管理人员就可以通过这些监控纪录来追踪责任人. 堡垒要想成功完全记到他的作用,只

Python成长笔记 - 基础篇 (八)

socket编程 应用层: 表示层: 会话层: 传输层: 网络层: ip地址 数据链路层: MAC地址 物理层: 协议类型: TCP/IP协议:三次握手,四次断开 2. Socket 参数介绍 socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)  必会 Create a new socket using the given address family, socket type and protocol nu

Python成长笔记 - 基础篇 (十二)----RabbitMQ、Redis 、线程queue

本节内容: 1.RabbitMQ 消息队列 2.Redis 3.Mysql PY 中的线程queue(threading Queue):用于多个线程之间进行数据交换,不能在进程间进行通信 进程queue:父进程与子进程中的交互,或者是同属于同一个父进程下多个子进程进行交互:两个不相关的进程间交互不能用进程queue RabbitMQ --信息流是单向的 两个完全独立的程序进行交互:1.进程间建立socket 2.一个写入disk,另一个调用 3.使用中间进程,RabbitMQ等 Remote p