week8

---恢复内容开始---

week8

1、动态导入模块

2、断言

3、ftp

4、socketserver

 

1、动态导入模块

1 import importlib
2 a = importlib.import_module('aa.aa') # aa目录下的aa模块
3 print(aa.import_C().name)
View Code

 

2、断言

跟if有点类似,判断是否符合条件,是则继续,否则报错。

1 a = 'name'
2 assert type(a) is str
View Code

 

3、FTP(文件传输:单下载)

 1 客户端
 2 1、读取文件名
 3 2、检测文件是否存在
 4 3、打开文件
 5 4、检测文件大小
 6 5、发送文件大小给客户端
 7 6、客户端确认
 8 7、开始边读边发数据
 9 8、md5
10 
11 import socket,os,hashlib
12 server = socket.socket()
13 server.bind(('localhost',9999))
14 server.lisen()
15 m = hashlib.md5()
16 while True:
17     try:
18         conn,addr = server.accept() 
19         data = conn.recv(1024)
20         cmd,filename =data.split()
21         if os.path.isfile(filename):
22             f = open(filename,'rb')
23             filesize = f.stat(filename).st_size
24             conn.send(str(filesize).encode())
25             conn.recv(1024)
26             for line in f:
27                 m.update(line)
28                 conn.send(line)
29                 print(m.hexdigest())
30             conn.send(str(hexdigest).encode)
31             f.close
32         print(send done')
33     except ConnectionResetError as e:
34         print('连接错误',e)
35 server.close()
客户端
 1 import socket,os,hashlib
 2 client = socket.socket()
 3 client.connect(('localhost',9999))
 4 m = hashlib.md5
 5 while True:
 6     cmd = imput('>>>:').strip()
 7     if len(cmd) == 0:continue
 8     filesize = client.recv(1024)
 9     client.send('请求发送’) #无实际意义的交互,防止粘包
10     filename = cmd.split[1]
11     f = open(filename+'.new','wb')
12     rec_filesize = 0
13     filesize = int(filesize.decode())
14     while filesize > rec_filesize:
15         if filesize - rec_filesize > 1024: # 做判断防止最后一次接收出现粘包
16             res_size = 1024
17         else:
18             res_size = filesize - rec_filesize
19         data = client.recv(res_size)
20         f.write(data)
21         rec_filesize += len(data)
22         m.update(data)
23     else:
24         new_file_md5 = m.hexdigest()
25         print('new file md5:',new_file_md5)
26     server_file_md5 = client.recv(1024)
27     print('server file md5',server_file_md5) #接收服务端读取的md5,与自己生成的md5进行比较
28 client.close
服务端

4、socketserver(面向对象的方法进行文件传输)

创建方式:

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

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

self.setup 请求处理前进行的事项
self.handle 请求处理中的事项
self.finish 请求处理后的事项
 1 import socketserver
 2 
 3 class MyTCPServer(socketserver.BaseRequestHandler):
 4     def setup(self): #交互前的动作
 5         pass
 6     def handle(self): #与用户的所有交互都在这里进行
 7         self.data = self.request.recv(1024)
 8         print("{} wrote:".format(self.client_address[0]))
 9         self.request.sendall(self.data.upper)
10     def finish(self): #与用户交互后的动作
11         pass
12 
13 
14 if  __name__ == '__main__'
15     HOST , PORT = 'localhost',9999
16     server = socketserver.ThreadingTCPServer((HOST,PORT),MyTCPServer)
17 #ThreadingTCPServer 多线程
18 #ForingTCPServer 多进程 在win不好使
19 server.server_forever()
客户端

 

转载于:https://www.cnblogs.com/wLDR/p/9971519.html

基于SSM框架的网红酒店预定系统,是一个集前台用户操作和后台管理员管理于一体的综合性平台。该系统旨在通过信息化手段,提高酒店预订的效率和用户体验。 系统的主要功能模块包括: 1. **用户管理**:允许用户注册、登录,查看个人信息,以及修改个人资料和密码。 2. **客房管理**:管理员可以添加、删除或修改客房信息,包括房型、价格、设施等。 3. **预订管理**:用户可以浏览可用房型,进行预订操作,管理员则可以管理预订订单,包括确认预订、办理入住和退房等。 4. **退订管理**:用户和管理员都可以处理预订的取消,管理员可以审核退订请求。 5. **系统管理**:管理员可以进行系统设置,包括权限管理、日志查看等。 系统的设计考虑了用户体验和管理员的便捷性,通过SSM框架的灵活性和MySQL数据库的稳定性,实现了数据的高效管理和处理。系统的前端界面友好,操作流程简洁,能够满足用户快速预订和查询的需求。同时,系统的后台管理功能强大,能够为管理员提供全面的数据分析和决策支持。 此外,系统还具有高度的安全性和稳定性,通过角色权限控制,确保了数据的安全性和系统的稳定运行。系统的开发和设计,不仅提升了网红酒店的品牌形象,也为用户带来了便捷的预订体验,进一步推动了酒店行业的信息化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值