socket实现文件的上传

#-------server层
import socket
import json
sk=socket.socket()
sk.bind(('10.70.2.143',8080))
sk.listen()
conn,addr=sk.accept()
#通信
str_dic=conn.recv(9090).decode('utf-8')
#将字符串形式反序列化为字典
dic=json.loads(str_dic)
if dic['opt']=='upload':
    filename='1'+dic['filename']
    with open (filename,'w',encoding='utf-8') as f:
        f.write(dic['content'])
if dic['opt']=='download':
    pass
conn.close()
sk.close()



#-------client层
import socket
import os
import json
sk=socket.socket()
sk.connect(('10.70.2.143',8080))
menu={'1':'upload','2':'download'}
for k,v in menu.items():
    print(k,v)
num=input("请输入功能选项:")
if num=='1':
    #上传功能
    #(功能,文件名,文件路径)
    dic={'opt':menu[num],'filename':None,'content':None}
    file_path=input("请输入需要上传的文件路径")
    #D:\Pygametest\scrapyTest\socket_file_test.py
    #获取路径的文件名
    filename=os.path.basename(file_path)
    #获取路径的文件内容
    with open(file_path,'r',encoding='utf-8') as f:
        content=f.read()
    dic['filename']=filename
    dic['content']=content
    #将字典序列化为字符串的形式
    str_dic=json.dumps(dic)
    #传给服务器
    sk.send(str_dic.encode('utf-8'))

if num=='2':
    pass
sk.close()

 

posted @ 2019-10-22 12:08  LBC不认输  阅读(418)  评论(0编辑  收藏  举报