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 相关文章推荐
Python中for循环详解
Jan 17 Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
Python3实现从文件中读取指定行的方法
May 22 Python
django之session与分页(实例讲解)
Nov 13 Python
快速了解Python中的装饰器
Jan 11 Python
python使用turtle库绘制树
Jun 25 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
pytorch torch.expand和torch.repeat的区别详解
Nov 05 Python
python 实现数据库中数据添加、查询与更新的示例代码
Dec 07 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 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 注册时输入信息验证器的实现详解
2013/07/05 PHP
php创建无限级树型菜单
2015/11/05 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
Android面试宝典
2013/08/06 面试题
英文版餐饮业求职信
2013/10/18 职场文书
机修工岗位职责
2013/11/24 职场文书
团员个人的自我评价
2013/12/02 职场文书
美德少年事迹材料
2014/01/23 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
质量承诺书范文
2014/03/27 职场文书
会议通知范文
2015/04/15 职场文书
退货证明模板
2015/06/23 职场文书