博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket上传文件
阅读量:4172 次
发布时间:2019-05-26

本文共 1705 字,大约阅读时间需要 5 分钟。

server.py文件

#!/usr/bin/env python#coding:utf-8#上传文件(至服务器)import SocketServer,osclass MyServer(SocketServer.BaseRequestHandler):    def handle(self):        base_path = r'C:\Users\91135\Desktop\test'        conn = self.request        print 'has connected!'        while True:            pre_data = conn.recv(1024)            cmd,file_name,file_size = pre_data.split('/')#获取请求方法、文件名和文件大小(整数,以字节为单位)             recv_size = 0#已经接收文件的大小(以字节为单位)            file_dir = os.path.join(base_path,file_name)#上传文件路径拼接            f = file(file_dir,'wb')            Flag = True            while Flag:                if int(file_size)>recv_size:#未上传完毕                    data = conn.recv(1024)#最多接收1024,可能接收的小于1024                    recv_size+=len(data)                    f.write(data)#写入文件                else:#上传完毕,则退出循环                    #recv_size = 0                    Flag = False            print 'upload successed.'            f.close()instance = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer)instance.serve_forever()

client.py文件

#!/usr/bin/env python#coding:utf-8import socket,osip_port = ('127.0.0.1',9999)sk = socket.socket()sk.connect(ip_port)#container = {'key':'','data':''}while True:    input = raw_input('cmd and path:')#cmd和path之间用'/'分割    cmd,path = input.split('/')     file_name = os.path.basename(path)    file_size=os.stat(path).st_size    sk.send(cmd+"/"+file_name+'/'+str(file_size))    send_size = 0    f= file(path,'rb')    Flag = True    while Flag:        if send_size + 1024 >=file_size:            data = f.read(file_size-send_size)            Flag = False        else:            data = f.read(1024)            send_size+=1024        sk.send(data)    f.close()sk.close()

转载地址:http://nvyai.baihongyu.com/

你可能感兴趣的文章
最近接了本分布式组件面试书的选题,请大家一起来提意见
查看>>
Redis整合MySQL和MyCAT分库组件(来源是我的新书)
查看>>
Java程序员普遍存在的面试问题以及应对之道(新书第一章节摘录)
查看>>
程序员高效出书避坑和实践指南
查看>>
计算机方面毕业生怎样写简历
查看>>
从软件公司的异同点讲起,聊聊未来的程序员该如何选公司和谋规划
查看>>
我不想安于当前的限度,以达到所谓的幸福,回顾下2020年的我
查看>>
如何在面试中介绍自己的项目经验(面向java改进版)
查看>>
通过写n本书的积累,我似乎找到了写好技术文章的方法(回复送我写的python股票电子书)
查看>>
如果很好说出finalize用法,面试官会认为你很资深
查看>>
分析若干没面试机会和没体现实力的简历
查看>>
用python的matplotlib和numpy库绘制股票K线均线
查看>>
以互联网公司的经验告诉大家,架构师究竟比高级开发厉害在哪?
查看>>
GanttProject 使用的控件第三方包:jdnc-modifBen.jar
查看>>
ps、grep和kill联合使用杀掉进程
查看>>
openfire中的mina框架使用
查看>>
去掉Windows Messager的自动登录
查看>>
dspace可以检索中文了
查看>>
利用Eclipse编辑中文资源,配置文件
查看>>
将中文转为unicode 及转回中文函数
查看>>