1 import importlib 2 3 __import__('import_lib.metaclass') #这是解释器本身内部用的 4 #importlib.import_module('import_lib.metaclass') #与上面这句效果同样,官方建议用这个
assert type(obj.name) is int服务器
print(obj.name/2)并发
也就是判断是否符合标准,不符合的话,程序就会中止运行,例如:在银行的转帐系统中,遇到问题,就会马上中止!ssh
服务端:socket
1 import socket 2 Server= socket.socket(AF_INET,SOCK_STREAM) 3 Server.bind('localhost',9999) 4 Server.listen(10) 5 6 while True:#重复链接 7 conn,addr = Server.accept() #阻塞 8 while True:#屡次发送信息 9 print("new conn",addr) 10 data = conn.recv(1024) #最大8192 recv默认是阻塞的,客户端不发,就一直处于此处 11 if not data: 12 break #客户端断开,conn.recv收到的都是空数据 13 print(data) 14 conn.send(data.upper())
客户端:ide
1 import socket 2 client = socket.socket() 3 client.connect(serverip,9999) #链接服务器 4 client.send(data)#发送数据 5 client.recv(data)#接受数据
1 import socket,os 2 3 server = socket.socket() 4 server.bind(('localhost',999)) 5 6 server.listen(10) 7 8 while True: 9 conn,addr = server.accept() 10 print("new conn:",addr) 11 while True: 12 data = conn.recv(1024) 13 if not data: 14 print("客户端已经断开") 15 break 16 print("执行指令:",data) 17 cmd_res = os.popen(data.decode()).read() 18 conn.send( str(len(cmd_res.encode())).encode("utf-8") )#先发大小给客户端 19 conn.send(cmd_res.encode("utf-8"))
1 import socket 2 3 client = socket.socket() 4 5 client.connect(('localhost',999)) 6 while True: 7 cmd = input(">>:").strip() 8 if len(cmd) ==0:continue 9 client.send(cmd.encode("utf-8")) 10 cmd_res_size = client.recv(1024) #接受命令结果的长度 11 print("命令的长度:",cmd_res_size) 12 received_size = 0 13 #receiced_data = b'' 14 while received_size<int(cmd_res_size.decode()): 15 16 data = client.recv(1024) 17 received_size+=len(data)#每次收到的可能小于1024 18 #print(data.decode()) 19 print(received_size) 20 else: 21 print("data done")
光只是简单的发消息、收消息没意思,干点正事,能够作一个极简版的ssh,就是客户端链接上服务器后,让服务器执行命令,并返回结果给客户端。spa
ftp server:code
读取文件名>>检测文件是否存在>>打开文件>>检测文件大小>>发送文件大小和md5给客户端>>等客户端确认>>开始边读边发送数据>>发送md5,视频
视频8.7 8.8回头从新看 server
实现并发处理blog
步骤:1.必须建立一个请求处理类,而且这个类要继承BaseRequestHandler,而且还有重写父类中的hangle方法
2.必需要实例化一个TCPsever,而且传递server IP和上面常见的请求处理类,给这个实例化的TCPserver
3.server.serve_forever() #处理多个请求,永远执行
4.call server_close() to close the socket