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时间整形转标准格式的示例分享
Feb 14 Python
python实现360皮肤按钮控件示例
Feb 21 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
python用post访问restful服务接口的方法
Dec 07 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 27 Python
Python pymysql模块安装并操作过程解析
Oct 13 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
Python数据分析入门之数据读取与存储
May 13 Python
如何正确理解python装饰器
Jun 15 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正确解析UTF-8字符串技巧应用
2012/11/07 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
Python help()函数用法详解
2014/03/11 Python
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python进阶之自定义可迭代的类
2019/08/20 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
python中id函数运行方式
2020/07/03 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
预备党员思想汇报范文
2014/01/11 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书