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 相关文章推荐
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
用Python实现数据的透视表的方法
Nov 16 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python机器学习实现决策树
Nov 11 Python
利用python实现AR教程
Nov 20 Python
Pandas读取csv时如何设置列名
Jun 02 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
Python字典和列表性能之间的比较
Jun 07 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
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
用 JSON 处理缓存
2007/04/27 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
js实现图片360度旋转
2017/01/22 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
详解Python命令行解析工具Argparse
2016/04/20 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
大学生毕业自我鉴定范文
2014/02/03 职场文书
广播节目策划方案
2014/05/23 职场文书
中层干部培训方案
2014/06/16 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
2015年教研员工作总结
2015/05/26 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL