根据alex老师视频开发的简单ftp程序,只能实现简单的get功能

ftp客户端程序:

#!/usr/bin/env  python
#_*_ coding:utf-8 _*_
import socket
host = "192.168.100.100"
port = 20000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
while True:
cmd = raw_input('input cmd:').strip()
if len(cmd) ==0:continue
s.sendall(cmd)
if cmd.split()[0] =="get":
print "开始传输文件..."
with open(cmd.split()[1],'wb') as f:
while True:
data = s.recv(1024)
if data == "FileTransferDone":break
f.write(data)
print "文件传输完成..."
continue
else:
print s.recv(1024)
s.close()

ftp服务器端程序:

#!/usr/bin/env python
#_*_ coding:utf-8 _*_
import SocketServer,commands,time class MyTcpHandler(SocketServer.BaseRequestHandler):
def handle(self):
while True:
self.data = self.request.recv(8192).strip()
#print "{} wrote:".format(self.client_address[0])
if not self.data:
print "client %s is dead!" % self.client_address[0]
break
user_input = self.data.split()
if user_input[0] =='get':
with open(user_input[1],'rb') as f:
self.request.sendall(f.read())
time.sleep(0.5)
self.request.send('FileTransferDone')
continue
cmd_status,result = commands.getstatusoutput(self.data)
if len(result.strip()) !=0:
self.request.sendall(result)
else:
self.request.sendall("DONE")

用python开发简单ftp程序的更多相关文章

  1. python作业简单FTP(第七周)

    作业需求: 1. 用户登陆 2. 上传/下载文件 3. 不同用户家目录不同 4. 查看当前目录下文件 5. 充分使用面向对象知识 思路分析: 1.用户登陆保存文件对比用户名密码. 2.上传用json序 ...

  2. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

  3. Python开发简单记事本

    摘要: 本文是使用Python,结合Tkinter开发简单记事本. 本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能. 最近很想对p ...

  4. socketserver模块写的一个简单ftp程序

    一坨需求... 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 (cd) ...

  5. Windows下用python编写简单GUI程序的方法

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py #!C:\Python27\python.exe ...

  6. Python开发简单爬虫

    简单爬虫框架: 爬虫调度器 -> URL管理器 -> 网页下载器(urllib2) -> 网页解析器(BeautifulSoup) -> 价值数据 Demo1: # codin ...

  7. 使用Python开发鸿蒙设备程序(0-初体验)

    到目前为止,鸿蒙设备开发的"官方指定语言"还是C语言! 这看起来是一件正常的事,毕竟鸿蒙设备开发还是属于嵌入式开发的范畴,而在嵌入式开发中C语言又是当之无愧的首选,所以,大家也都接 ...

  8. elipse+pydev+python开发arcgis脚本程序

    环境配置参考:http://www.cnblogs.com/halfacre/archive/2012/07/22/2603848.html 添加arcpy类库.arctoolbox.arcgis-b ...

  9. python 开发简单的聊天工具

    python 太强大了,以至于它什么都可以做,哈哈,开个玩笑.但是今天要讲的真的是一个非常神奇的应用. 使用python写一个聊天工具 其实大家平时用的QQ类似的聊天工具,也是使用socket进行聊天 ...

随机推荐

  1. CodeForces 222D - Olympiad

    第一行给出两个个数字k和n,第二三行分别有k个数字,求将第二.三行之间的数字相互组合,求最多有多少个组合的和不小于n 纯粹暴力 #include <iostream> #include & ...

  2. GPS数据处理 - 字符串函数的灵活应用

    题目内容: NMEA- 0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA- The National Mari ...

  3. JavaScript中setTimeout和setInterval的使用

    相同点:这两个方法都可以用来实现在一个固定的时间之后去实现JavaScript代码,两个方法都包含有两个参数,第一个是将要执行的代码字符串,第二是以毫秒为单位的时间间隔,当过了这个时间间隔之后就会执行 ...

  4. iwebshop 改版页面

  5. eclipse tomcat内存设置

    -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m

  6. SQL Server SQLOS

    SQLOS 抽象出了: 1.任务高度管理子系统. 2.内存管理子系统. 3.错误,异常处理机制. 4.死锁侦测各解决机制. 5.运行第三方代码. 好处: 1.减少线种的上下文切换.空闲连接不占用线程.

  7. 【STM32】用DMA实现多路ADC通道数据采集

    今天尝试了下STM32的ADC采样,并利用DMA实现采样数据的直接搬运存储,这样就不用CPU去参与操作了. 找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的 ...

  8. 如何让ios app支持32位和64位?

    将ios app转换为兼容32位和64位步骤:  1. 安装 Xcode 5.  2. 打开你的项目.Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到64位相当重要.  3. 将你的项目 ...

  9. HDU1879 继续畅通工程 (并查集)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  10. nyoj 325 zb的生日(dfs)

    描述今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb ...