python实现TCP文件传输


Posted in Python onMarch 20, 2020

前几天已经讲过了UDP协议下大文件传输的python实现代码,今天再实现TCP协议下大文件传输的python实现代码。
TCP和UDP的实现过程还是比较不一样的。

实现代码:

服务端:

import socket
import time

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',9999))
s.listen(5)
print('Waiting for connection...')

while True:
 sock,addr = s.accept()
 print('Accept new connection from %s:%s...' % addr)
 if count == 0:
  data1 = sock.recv(1024)
  print(str(data1))
  file_total_size = int(data1.decode())
  received_size = 0
  sock.send('received'.encode())
  data = sock.recv(1024)
  filepath = str(data.decode())
  f = open(filepath, 'wb')
 while received_size < file_total_size:
  data = sock.recv(1024)
  f.write(data)
  received_size += len(data)
  print('已接收 ',received_size,' Byte')
 data = sock.recv(1024)
 if data == b'end':
  break
  
f.close()
s.close()

客户端:

import socket
import os
import time
filename = input('please enter the filename you want to send:\n')
filesize = str(os.path.getsize(filename))
fname1, fname2 = os.path.split(filename)
client_addr = ('127.0.0.1',9999)
f = open(filename,'rb')
count = 0
flag = 1
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#建立连接:
s.connect(('127.0.0.1', 9999))
while True:
 if count == 0:
  s.send(filesize.encode())
  start = time.time()
  s.recv(1024)
  s.send(fname2.encode())
 for line in f:
  s.send(line)
  print('sending...')
 s.send(b'end')
 break

s.close
end = time.time()
print('cost' + str(round(end - start, 2)) + 's')

运行截图:

服务器端:

python实现TCP文件传输

客户端:

python实现TCP文件传输

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
Python程序运行原理图文解析
Feb 10 Python
python如何实现反向迭代
Mar 20 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
Django之全局使用request.user.username的实例详解
May 14 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
Python实现弹球小游戏
Aug 01 Python
python实现FTP循环上传文件
Mar 20 #Python
python实现ftp文件传输功能
Mar 20 #Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 #Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 #Python
python实现ftp文件传输系统(案例分析)
Mar 20 #Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 #Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 #Python
You might like
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python 实现字符串下标的输出功能
2020/02/13 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
工程质量月活动方案
2014/02/19 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS