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操作MySQL简单实现方法
Jan 26 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
Python编写电话薄实现增删改查功能
May 07 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
Python实现提取XML内容并保存到Excel中的方法
Sep 01 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 Python
通过python3实现投票功能代码实例
Sep 26 Python
Django中提示消息messages的设置方式
Nov 15 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
win10从零安装配置pytorch全过程图文详解
May 08 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/06/14 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
详解php中 === 的使用
2016/10/24 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
Python 打印中文字符的三种方法
2018/08/14 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
python将音频进行变速的操作方法
2020/04/08 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
django使用graphql的实例
2020/09/02 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
护士实习自我鉴定
2013/10/22 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
红旗方阵解说词
2014/02/12 职场文书
人事专员工作职责
2014/02/22 职场文书
农村葬礼主持词
2014/03/31 职场文书
商铺门面租房协议书
2014/10/21 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
导游词300字
2015/02/13 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript