python网络编程第三版网盘_Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)...
from socket import *
importsysimporttime#实现各种功能请求
classTftpClient(object):def __init__(self,sockfd):
self.sockfd=sockfddefdo_list(self):
self.sockfd.send(b'L') #发送请求类型
#接收服务器回应
data = self.sockfd.recv(1024).decode()if data == "OK":
data= self.sockfd.recv(4096).decode()
files= data.split('#')for file infiles:print(file)print("文件展示完毕")else:#请求失败原因
print(data)#下载指定文件
defdo_get(self,filename):
self.sockfd.send(('G' +filename).encode())
data= self.sockfd.recv(1024).decode()#请求成功
if data == 'OK':
fd= open(filename,'wb')whileTrue:
data= self.sockfd.recv(1024)#结束符
if data == b'##':breakfd.write(data)
fd.close()print("%s 下载完成\n"%filename)else:#请求失败原因
print(data)defdo_put(self,filename):#判断本地是否有要上传的文件
try:
fd= open(filename,'rb')except:print("上传文件不存在")returnself.sockfd.send(("P"+filename).encode())
data= self.sockfd.recv(1024).decode()#请求成功
if data == 'OK':whileTrue:
data= fd.read(1024)if notdata:breakself.sockfd.send(data)
fd.close()#发送结束符并防止粘包
time.sleep(0.1)
self.sockfd.send(b'##')print("%s 上传完毕"%filename)else:#请求失败原因
print(data)#创建套接字并建立连接
defmain():#终端输入地址
if len(sys.argv) < 3:print("argv is error")returnHOST= sys.argv[1]
PORT= int(sys.argv[2])
ADDR=(HOST,PORT)
sockfd=socket()
sockfd.connect(ADDR)#创建对象
tftp =TftpClient(sockfd)whileTrue:print("")print("==========命令选项===========")print("********** list *********")print("********** get file ******")print("********** put file ******")print("********** quit *********")print("=============================")
cmd= input("输入命令>>")#去除空格判断命令
if cmd.strip() == "list":#查询
tftp.do_list()#获取文件上传或下载命令
elif cmd[:3] == "get":#拆分命令获取文件名
filename = cmd.split(' ')[-1]#下载
tftp.do_get(filename)elif cmd[:3] == "put":
filename= cmd.split(' ')[-1]#上传
tftp.do_put(filename)#退出
elif cmd.strip() == "quit":
sockfd.send(b'Q')
sockfd.close()
sys.exit("欢迎使用")else:print("请输入正确命令!")if __name__ == "__main__":
main()
多线程并发
threading模块完成多线程并发
对比多进程并发
优势 :
资源消耗少
缺点 :
需要注意对共享资源的操作
实现步骤:1. 创建套接字,绑定,监听2. 接收客户端连接请求,创建新的线程3. 主线程继续等待其他客户端连接,分支线程执行客户端具体请求4. 处理完客户端请求后分支线程自然退出,关闭客户端套接字
示例:from socket import *
importos,sysfrom threading import *HOST= "0.0.0.0"PORT= 8888ADDR=(HOST,PORT)#客户端处理函数
defhandler(connfd):print("Connect from",connfd.getpeername())whileTrue:
data= connfd.recv(1024).decode()if notdata:break
print(data)
connfd.send(b'Receive your msg')
connfd.close()defmain(ADDR):
s=socket()
s.bind(ADDR)
s.listen(5)whileTrue:try:
connfd,addr=s.accept()#处理 Ctrl + C
exceptKeyboardInterrupt:
s.close()
sys.exit("服务器退出")#其他异常
exceptException as e:print(e)continue
#创建子线程用于处理客户端请求
t = Thread(target=handler,args=(connfd,))
t.setDaemon(True)
t.start()if __name__ == __main__:
main()
python网络编程第三版网盘_Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)...相关推荐
- python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...
下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...
- python基础教程第三版电子版-《python基础教程第三版》PDF高清完整版-免费下载...
<python基础教程第3版>高清PDF下载地址:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 ...
- python基础教程第三版-《Python基础教程第三版》原版中英文PDF+代码+袁国忠(译)...
<Python基础教程第3版>整本书的结构安排还是比较明显的.先是基础知识和python的基本数据类型和语言特性介绍,然后是面向对象的编程.之后介绍python的标准库以及相关主题的编程( ...
- UNIX环境高级编程(第三版 源码及编译好的静态库文件)
UNIX环境高级编程(第三版) 源码 及 库文件 链接: https://pan.baidu.com/s/1tPY17lWNDEbzkOwZaRUUNg 提取码: 1024 复制这段内容后打开百度网盘 ...
- UNIX环境高级编程-第三版
Unix环境高级编程-第三版 之前学习了<Linux系统编程>对于常见的概念和函数都有了基础的认知,这里准备通过这本书,深入学习系统API相关内容.笔记内容会有所倾向,不会严格反应书本内容 ...
- JavaScript面向对象编程-第三版不完全系统解读
JavaScript面向对象编程-第三版不完全系统解读 作者:老九-技术大黍 产品:查看原文 社交:知乎 公众号:老九学堂(新手有福利) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者 ...
- python程序实例教程基础-python基础教程第三版源代码
[实例简介] python基础教程第三版源代码 python基础教程第三版源代码 [实例截图] [核心代码] Beginning_Python_version3_SourceCode └── Begi ...
- python基本代码教程-python基础教程第三版源代码
[实例简介] python基础教程第三版源代码 python基础教程第三版源代码 [实例截图] [核心代码] Beginning_Python_version3_SourceCode └── Begi ...
- Linux - Unix环境高级编程(第三版) 代码编译
Unix环境高级编程(第三版) 代码编译 本文地址:http://blog.csdn.net/caroline_wendy 时间:2014.10.2 1. 下载代码:http://www.apuebo ...
- 【好书分享】《Python Cookbook》第三版 中文版(带书签)
[书籍介绍] 带完整书签 书籍中的文字可复制 [获取方式] <Python Cookbook>第三版 中文版.rar: https://url00.ctfile.com/f/1936360 ...
最新文章
- 设计模式之外观模式(Facade)摘录
- 腾讯会议又一黑科技,屏蔽超过 200 种会议噪声是如何做到的?
- 【转】 Android新特性介绍,ConstraintLayout完全解析
- 在IIS 5.1 或IIS6 中配置PHP 的FastCGI模式
- PotPlayer安装与配置
- 5分钟了解VMware vSAN的分布式RAID
- 总是记不住java的IO流用法?用N个问题教你掌握java IO流
- 顺序循环队列类c#语言,C#--循环队列的顺序存储
- 关于Bean Validation
- javascript offsetLeft,Left,clientLeft 各种浏览器位置相关属性
- Qt Designer位置
- python识别二维码
- java中explain什么意思_explain关键字使用解释
- 怎么逼自己 成为一个上进的人
- 微专业数据分析师 数据资料_微数据:元数据的内容
- Android面试常见问题汇总
- 015:Scrapy获取淘车网十七万二手车数据
- 本科、硕士和博士有何区别?
- 如何理解「外汇储备导致人民币货币增加」?
- 使用vnc启动服务器candence相关问题
热门文章
- 面向对象-类与对象、关键字、异常使用
- Maven图文闪电入门
- 扩展Email系统,成就分布式协同
- 微型计算机的三类接口,2020年武汉理工期末微机接口复习.doc
- 多元有序logistic回归_stata速学|logistic回归分析
- openpythonxl_常用模块之openpyxl (python3入门)
- CentOS环境下jdk的安装与配置
- PHP中cURL的curl_getinfo函数返回的CURLINFO_HTTP_CODE是0
- MAC的编译更严格一些
- VC如何打开代码对应的界面编辑窗口