#传送文件
#client 客户端
import socket
sock = socket.socket()
sock.connect((“IP”,8888))
while 1:
cmd = input(“请输入命令:”) #Pput 文件名
action,filename = cmd.strip().split(" “)
filesize = os.path.getsize(filename)
file_info={
“action”:action,
“action”:filename,
“action”:filesize,
}
file_info_json = json.dumps(file_info).encode(“utf-8”)
sock.send(file_info_json)
#确认服务段接收到文件信息
code = sock.recv(1024).decode(“utf-8”)
if code ==“200”:
#发送文件数据
with open(filename,‘rb’) as f:
for line in f:
sock.send(line)
else:
print(“服务器异常”)
#server 服务端
import socket
sock = socket.socket()
sock.bind(“IP”,8888)
sock.listen(5)
while 1:
print(“server os working…”)
conn,addr=sock.accept()
while 1:
data=conn.recv(1024).decode(“utf-8”)
file_info = json.loads(data)
print(“file_info”,file_info)
#文件信息
action=file_info.get(‘action’)
filename=file_info.get(‘filename’)
filesize=file_info.get(‘filesize’)
conn.send(b"200”)
#接收文件数据
with open(“put/”+filename,“wb”) as f:
recv_data_length = 0
while rece_data_length<filesize:
data = conn.recv(1024)
recv_data_length+=len(data)
f.write(data)
print(‘文件总大小:%s,成功接受%s’%(filesize,recv_data_length))
print(“接受成功”)
#socketserver模块(并发)
#服务器
import socketserver
class Myserver(socketserver,BaseRequestHandler):
def handle(self):
pass
#1.创建socket对象 2.self.socket.bind() 3.self.socket.listen(5)
socketserver.ThreadingTCPServer((“IP”,8888),Myserver)
server.serve_forever()