2019独角兽企业重金招聘Python工程师标准>>>

1.描述
实现任何位置文件下载到客户端执行的当前目录下
实现任何位置文件上传到服务端执行的当前目录下服务端:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
# @Date    : 2015-12-23 23:24:32
# @Author  : eddy (278298125@qq.com)
# @Link    : http://my.oschina.net/eddylinux
# @Version : 1.0import SocketServer
import time
import os
#定义当前目录
current_dir = os.getcwd()
#定义一个类
class EddyFtpserver(SocketServer.BaseRequestHandler): #定义接收文件方法def recvfile(self, filename): print "starting reve file!"f = open(filename, 'wb') self.request.send('ready') while True: data = self.request.recv(4096) if data == 'EOF': print "recv file success!"breakf.write(data) f.close() #定义放送文件方法                                     def sendfile(self, filename): print "starting send file!"self.request.send('ready') time.sleep(1) f = open(filename, 'rb') while True: data = f.read(4096) if not data: breakself.request.sendall(data) f.close() time.sleep(1) self.request.send('EOF') print "send file success!"#SocketServer的一个方法                           def handle(self): print "get connection from :",self.client_address while True: try: data = self.request.recv(4096) print "get data:", data    if not data: print "break the connection!"break                else: action, filename = data.split() #判断上传if action == "put": #上传文件保存到当前目录下filename = current_dir + '/' + os.path.split(filename)[1]self.recvfile(filename) #判断下载elif action == 'get': self.sendfile(filename)  else: print "get error!"continueexcept Exception,e: print "get error at:",e if __name__ == "__main__": host = 'localhost' port = 8888#实例化s = SocketServer.ThreadingTCPServer((host,port), EddyFtpserver) s.serve_forever() 客户端
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2015-12-23 23:24:53
# @Author  : eddy (278298125@qq.com)
# @Link    : http://my.oschina.net/eddylinux
# @Version : 1.0import socket
import time
import os
ip = 'localhost'
port = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#定义当前目录
current_dir = os.getcwd()
def recvfile(filename): print filenameprint "server ready, now client rece file~~"f = open(filename, 'wb') while True: data = s.recv(4096) if data == 'EOF': print "recv file success!"breakf.write(data) f.close()
def sendfile(filename): print "server ready, now client sending file~~"f = open(filename, 'rb') while True: data = f.read(4096) if not data: breaks.sendall(data) f.close() time.sleep(1) s.sendall('EOF') print "send file success!"def confirm(s, client_command): s.send(client_command) data = s.recv(4096) if data == 'ready': return Truetry: s.connect((ip,port)) while 1: client_command = raw_input(">>") if not client_command: continueaction, filename = client_command.split() if action == 'put': if confirm(s, client_command): sendfile(filename) else: print "server get error!"elif action == 'get': if confirm(s, client_command): print current_dirprint filenamefilename = current_dir + '/' + os.path.split(client_command)[1]print filenamerecvfile(filename) else: print "server get error!"else: print "command error!"
except socket.error,e: print "get error as",e
finally: s.close()
运行服务端
python EddyFtp_server.py
get connection from : ('127.0.0.1', 56051)
运行客户端
python EddyFtp_client.py
>>put /tmp/b.pdf
server ready, now client sending file~~
send file success!

转载于:https://my.oschina.net/eddylinux/blog/551441

python scoket、SocketServer简单实现文件上传下载相关推荐

  1. python实现阿里云OSS文件上传下载

    一 前言 最近使用到阿里云的产品OSS,用于临时存储线上抽取的数据,然后起本地化的流程去OSS拉回本地,进行自动化数据验证.OSS提供了web方式的管理控制台,命令行管理工具,提供了主流的SDK支持, ...

  2. 树莓派3B+采用花生棒进行内网穿透,从拆箱到实现SSH远程控制与sftp简单远程文件上传下载

    树莓派3B+采用花生棒进行内网穿透,使用sftp实现远程控制与简单远程文件上传下载) 准备步骤 物理环境搭建 关于基础配置的博文推荐 树莓派联网配置 基础联网 配置静态ip 花生壳内网穿透 常用远程端 ...

  3. 关于SpringMVC框架实现简单的文件上传下载(ssm)

    关于ssm框架整合文件的上传和下载. 首先来看单个附件的上传和下载: 1.首先创建一个用来测试的jsp文件上传下载的页面  代码如下 <%@ page language="java&q ...

  4. python实现TCP远程服务器文件上传,下载系统

    TCP服务器代码如下: from socket import *def client_upload(client_socket):"""上传数据""& ...

  5. salesforce 零基础学习(四十二)简单文件上传下载

    项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...

  6. 利用Socketserver实现简单的文件上传

    利用Socketserver实现简单的文件上传 server.py #!/usr/bin/env python #coding:utf-8 import SocketServer import os ...

  7. python ftp下载文件_文件上传下载Python

    点击上方蓝字关注我! 图片来源 pexels.com 简单实现文件上传.下载 1 Server端 # -*- coding: utf-8 -*-import jsonimport os__author ...

  8. 简述php中文件上传过程,简单php文件上传详细说明

    关于文件上传我们讲了很多,这只是一款最基本的简单的文件上传功能,同时本教程也介绍了关于上传的原理以及各种函数的使用与file的参数说明,以及php.ihi设置上传文件大小配置等. 1  如果实现小文件 ...

  9. 使用jspsmartupload完成简单的文件上传系统

    请不要妄想,一个html的file控件,再加上JavaScript与jQuery语句就可以完成文件上传, 文件上传系统从来是需要配合服务器来完成的 用户把自己的文件上传到服务器上 文件上传系统是很复杂 ...

最新文章

  1. 网络模型:(0)背景
  2. java exception用法_JavaException的使用
  3. 把文件夹下的所有文件打包成一个zip包
  4. Docker 镜像之存储管理
  5. 百度地图API : 自定义标注图标
  6. Utility Manager 的一些百度不了的操作
  7. 论文浅尝 | How to Keep a Knowledge Base Synchronized
  8. php 中curd表达啥,thinkphp的CURD和查询方式介绍
  9. 利用国内镜像加快pip下载速度和成功率
  10. 量子计算机的工作原理(转)
  11. 个性化网站建设的一般流程
  12. ardupilot 关于设备车Rover的学习《3》------模式控制
  13. 码无止境(1)——一个科研项目立项时的小程序(字典嵌套列表)
  14. docker 容器启动成功 外部访问不到原因
  15. Unity报错:Assertion failed on expression: ‘IsMatrixValid(matrix)‘...的解决办法
  16. 标签云制作工具wordart的注册登录页面介绍
  17. 常用计算机的外设有哪些,电脑外设设备有哪些 电脑外设产品什么品牌好
  18. JS - 利用performance.timing进行性能分析
  19. 详解 pcap_findalldevs_ex
  20. GitHub 项目被爆 刷 Star!阿里这波又摊上事了...

热门文章

  1. ajxs跨域 php_php设置header头允许ajax跨域请求
  2. 限制服务器访问指定网站,如何允许或限制某一国或地区的用户访问网站
  3. python内核大小_关于keras.layers.Conv1D的kernel_size参数使用介绍
  4. (1) 漂亮的日期控件
  5. jsDate对象和倒计时图片案例
  6. linux系统部署静态网站,Linux笔记15 使用Apache服务部署静态网站。
  7. python dict遍历文件_python 字典(dict)遍历的四种方法性能测试报告
  8. 机器学习算法—集成算法原理详解
  9. Java学习小程序(10)三个等级的才字母游戏
  10. Scala入门到精通——第十九节 隐式转换与隐式参数(二)