python socket 文件传输

来源:互联网 发布:数据库教程视频 编辑:程序博客网 时间:2024/05/21 22:55
一. server#-*- coding:utf-8 -*-import os,socketimport hashlib#创建serversocket对象server=socket.socket()server_name=input('请输入服务器地址(ip地址)').strip()#port_name=int(input('请输入服务器端口,通用端口为8888').strip())#绑定服务器地址和端口server.bind((server_name,8888))#监听server.listen(5)while True:    #获取client对象 connIP地址    print('等待接入。。。。')    conn,addr=server.accept()    print(str(addr),'已经连接。。。')    while True:    #接收client端信息        data=conn.recv(1024)        if not data:            print('客户端没有数据传过来')            break        cmd,filename=data.decode().split()#用空格区分进行分割cmdfilename        print(cmd,filename)        #os.chdir(r'c:\py') #确认文件目录    #判断文件及文件夹是否存在        if os.path.isfile(filename):            #存在,就打开文件,用byte流读取            get_file=open(filename,'rb')            #获取文件的大小            file_size=os.stat(filename).st_size            #先发送文件大小给client            conn.send(str(file_size).encode('utf-8'))            #获取客户端确认            #res=conn.recv(10)            #获取md5加密对象            m = hashlib.md5()            #发送文件            for line in get_file:                #m.update(line)                conn.send(line)           #print('md5:',m.hexdigest())            get_file.close()        else:            conn.send('0'.encode('utf-8'))        print('send done')server.close()二.client 
#-*- coding:utf-8 -*-import os,socketimport hashlib#创建serversocket对象client=socket.socket()server_name=input('请输入连接服务器地址(ip地址)').strip()#port_name=int(input('请输入服务器端口,通用端口为8888').strip())#连接服务器client.connect((server_name,8888))while True:    #输入指令    cmd_str=input('请输入get filename,输入Q退出:').strip().encode('utf-8')    if not cmd_str:        continue    elif cmd_str==b'Q':        print('退出')        break    else:        #发送指令        client.send(cmd_str)    #接收服务器的指令信息    file_size = client.recv(1024).decode()    if file_size =='0' :        print('没有这个文件或文件为空!')        continue    # else:    #     client.send(b'start') #client端确认允许传文件    print('文件大小:'+file_size)    file_name= cmd_str.split()[1]    print(file_name)    os.chdir(r'd:\py')    f=open(file_name,'wb')    res_size = 0    while res_size<int(file_size):        data=client.recv(1024)        res_size+=len(data)        f.write(data)        print(file_size,res_size)    else:        print('文件接收完成')        f.close()client.close()

原创粉丝点击