资源简介
此代码基于python实现了服务器/客户端的断点续传,可以作为网络编程中的参考。
代码片段和文件信息
#!/usr/bin/env python
# --coding = utf-8
# Author Allen Lee
import socket os json sys
import struct
import time
import sys
class Myclient():
# 在构造方法中启动client的socket对象以及连接server端
def __init__(self):
self.client = socket.socket()
self.client.connect((‘127.0.0.1‘ 9909))
# main为client的主方法,其中通过对用户输入的命令来判断具体操作,并通过反射将其引导到对应的方法
# !/usr/bin/python3
def clear(self):
os.system(‘cls‘)
def main(self):
while True:
res_data = self.client.recv(1024).strip()
if not res_data:
break
print(str(res_data encoding=‘utf-8‘))
print(‘请输入命令 put:发送文件\n‘)
send_data = input(‘>>: ‘).strip()
if not send_data:
continue
if hasattr(self send_data):
getattr(self send_data)(send_data)
else:
self.client.close()
# 当用户输入的不是指定的put方法时,退出
def put(self send_data):
pathh = input(‘Input the file’s path :‘)
# 首先判断文件是否存在,通过os.path.isfile来实现
ret = os.path.isfile(pathh)
if not ret:
print(‘The file is not exist‘)
return False
# 如果存在,则将操作类型、文件名、文件大小以字典形势格式化,再以json的方法进行格式化
else:
# 通过os.stat方法来取文件的大小
file_size = os.stat(pathh).st_size
file_name = os.path.basename(pathh)
self.client.send(bytes(send_dataencoding=‘utf-8‘))
time.sleep(1)
print(send_data)
print(file_name)
self.client.send(bytes(file_name encoding=‘utf-8‘))
time.sleep(1)
print(file_size)
self.client.send(str(file_size).encode(‘utf-8‘))
res_tag = str(self.client.recv(1024).decode(‘utf-8‘))
print(res_tag) ####打印接受的ok或continue
if not res_tag:
return False
if res_tag.startswith(‘ok‘):
# 上传文件只用r就够了
with open(pathh ‘rb‘) as f:
new_size = 0
scale = file_size//1024
while True:
try:
for i in range(scale + 1):
filedata = f.read(1024)
# print(filedata)
new_size += len(filedata)
if not filedata:
break
self.client.send(filedata)
self.progres(new_size file_size)
time.sleep(0.1)
except KeyboardInterrupt:
self.client.close()
if res_tag.startswith(‘continue‘):
with open(pathh ‘rb+‘) as f:
# 此处使用seek来进行文件指针的偏移,进而完成断点续传的功能
sendd_data
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5716 2018-11-18 19:55 c_f.py
文件 3580 2018-11-18 19:55 s_f.py
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论