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发送arp欺骗攻击代码分析
Jan 16 Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
python运行时间的几种方法
Jun 17 Python
python中range()与xrange()用法分析
Sep 21 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
python实现翻译word表格小程序
Feb 27 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
Python 如何安装Selenium
May 06 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 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多重接口的实现方法
2015/06/20 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
jquery 常用操作方法
2010/01/28 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
js数组操作学习总结
2013/11/04 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
Python分类测试代码实例汇总
2020/07/23 Python
Python类class参数self原理解析
2020/11/19 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
护理专业自我鉴定
2014/01/30 职场文书
保险专业求职信
2014/07/07 职场文书
海洋科学专业求职信
2014/08/10 职场文书
孩子教育的心得体会
2014/09/01 职场文书
小学副班长竞选稿
2015/11/21 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
MySQL的Query Cache图文详解
2021/07/01 MySQL
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript