可能会出现的问题
解决方法:
服务端
# server
import socket
import struct
import os
import json
FILE_PATH=r‘C:\Users\Administrator\Desktop\bao\文件‘
sk=socket.socket()
sk.bind((‘192.168.0.103‘,1235))
sk.listen()
while True:
conn,addr=sk.accept()
while True:
msg1 = conn.recv(4)
s=struct.unpack(‘i‘,msg1)[0]
print(s)
msg=conn.recv(s)
msg=json.loads(msg)
print(msg)
with open(os.path.join(FILE_PATH,msg[‘filename‘]),mode=‘wb‘)as f:
while msg[‘filesize‘]>0:
content=conn.recv(1024)
msg[‘filesize‘]-=len(content)
f.write(content)
客户端
#client
import socket
import struct
import os
import json
FILE_PATH=r‘C:\Users\baobao\Desktop\笔记\笔记‘
sk=socket.socket()
sk.connect((‘192.168.0.103‘,1235))
while True:
alist=[]
s_list = os.walk(FILE_PATH, topdown=True, onerror=None, followlinks=False)
for a, b, c in s_list:
for i in c:
path = os.path.join(a, i)
alist.append(path)
for index,i in enumerate(alist,1):
print(index,os.path.basename(i))
ret=input(‘请输入传输内容的序号:‘)
if ret.upper()==‘Q‘:break
filename=os.path.basename(alist[int(ret)-1])
filesize=os.path.getsize(alist[int(ret)-1])
dic={‘filename‘:filename,‘filesize‘:filesize}
dic=json.dumps(dic).encode(‘utf-8‘)
s_si = struct.pack(‘i‘, len(dic))
sk.send(s_si)
sk.send(dic)
with open(alist[int(ret)-1],mode=‘rb‘)as f:
while filesize>0:
content=f.read(1024)
filesize-=len(content)
sk.send(content)
sk.close()
原文:https://www.cnblogs.com/xiaoxiannvdbky/p/14866265.html