环境介绍:
项目路径:
服务端执行过程:
客户端执行过程:
上传成功截图:
服务端代码:
import socket
file_server = socket.socket()
file_server.bind(('0.0.0.0',9999))
file_server.listen(5)
while True:
print('Waiting for the connection..........')
conn,addr=file_server.accept()
print('成功连接到 :',conn)
print('客户端IP为:',addr)
while True:
file_name = conn.recv(1024).decode()
if file_name == 'exit': #对应client端退出传输时的Q,那么server端应该去等待别的连接
conn.send(('结束传输!!!').encode())
print("等待新连接!!!")
conn.close()
break
print('file_name:',file_name)
f = open(file_name,'wb')
while True:
data = conn.recv(1024)
if data == b'##':
break
f.write(data)
conn.send('传输成功!!!'.encode())
print('传输成功!!!')
file_server.close()
客户端代码:
import sys,os,socket,time
file_client = socket.socket()
file_client.connect(('127.0.0.1',9999))
while True:
#选择文件,暂时写死测试,后续加入选择功能
#写绝对路径名+文件名
file_name = input("选择传输文件的文件名>>:")
if file_name == 'q':
break
file_client.send(os.path.basename(file_name).encode()) #send 1告知对方文件名
f = open(file_name,'rb')
while True:
print("传输中!!!")
data = f.read(1024)
if not data:
break
file_client.send(data) #send 2发送数据
time.sleep(0.1)#防止粘包
file_client.send("##".encode())#### send 3标志传输完毕
falg = file_client.recv(1024).decode()
print(falg)
f.close()
file_client.send(b'exit')
print(file_client.recv(1024).decode())
file_client.close()
这是实现文件上传的基本代码,可以对其进行后续优化,比如运用函数,类,GUI…
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)