034文件上传
因为这个是简单的,所以很容易
思想就是建立连接后,客户端发送文件名字和大小到服务端,服务端接受后,客户端开始发送文件,直到发完。具体的还是要看下面的代码,我自己实现了一遍
1 import socket 2 import os 3 4 def get_server_socket(): 5 sk = socket.socket() 6 address = ('127.0.0.1',8888) 7 sk.bind(address) 8 sk.listen(3) 9 return sk 10 11 def wait_connect(sk): 12 print('waitconnecting...') 13 conn, addr = sk.accept() 14 return conn 15 16 if __name__ == '__main__': 17 sk = get_server_socket() 18 conn = wait_connect(sk) 19 BASIC_DIR = os.path.dirname(os.path.abspath(__file__)) 20 while True: 21 data = str(conn.recv(1024),'utf8') 22 cmd,filename,file_size = data.split('|') 23 path = os.path.join(BASIC_DIR,'yuan',filename) 24 file_size = int(file_size) 25 f = open(path,'wb') 26 has_receive = 0 27 while has_receive != file_size: 28 data = conn.recv(1024) 29 f.write(data) 30 has_receive += len(data) 31 f.close()post_server.py
1 import socket 2 import os 3 4 def get_client_socket(): 5 sk = socket.socket() 6 address = ('127.0.0.1',8888) 7 sk.connect(address) 8 return sk 9 10 if __name__ == '__main__': 11 BASIC_DIR = os.path.dirname(os.path.abspath(__file__)) 12 sk = get_client_socket() 13 while True: 14 inp = input('>>>').strip()#post|11.png 15 cmd,path = inp.split('|') 16 path = os.path.join(BASIC_DIR,path)#使用系统的路径拼接 17 filename = os.path.basename(path)#拿到文件名字 18 file_size = os.stat(filename).st_size#拿到文件的大小 19 file_info = 'post|%s|%s'%(filename,file_size) 20 sk.sendall(bytes(file_info,'utf8')) 21 f = open(path,'rb') 22 has_sent = 0 23 while has_sent != file_size: 24 data = f.read(1024) 25 sk.sendall(data) 26 has_sent += len(data) 27 f.close() 28 print('上传完成')post_client.py
相关推荐
sjcheck 2020-11-10
hedongli 2020-09-01
Purgatory00 2020-09-15
凉白开 2020-07-19
layloge 2020-07-05
dlutbob 2020-06-17
三动 2020-06-16
bigNoseLiu 2020-06-15
JF0 2020-06-13
newfarhui 2020-06-06
MicroBoy 2020-06-05
deadgrape 2020-05-19
vs00ASPNET 2020-05-10
Skyline 2020-05-07
xcznb 2020-05-03
liusaisoso 2020-04-18
wwwxuewen 2020-04-09
pimshell 2020-04-06