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 10 Python
Python入门篇之字典
Oct 17 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
TensorFlow基本的常量、变量和运算操作详解
Feb 03 Python
Python os模块常用方法和属性总结
Feb 20 Python
Python pymsql模块的使用
Sep 07 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 Python
讲解Python实例练习逆序输出字符串
May 06 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
农民和部队如何穿矿
2020/03/04 星际争霸
乱谈我对耳机、音箱的感受
2021/03/02 无线电
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
php自动跳转中英文页面
2008/07/29 PHP
php 分库分表hash算法
2009/11/12 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
php注销代码(session注销)
2012/05/31 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php计算一个文件大小的方法
2015/03/30 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
纯JS实现轮播图
2017/02/22 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
Python实现的一个简单LRU cache
2014/09/26 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
python range实例用法分享
2020/02/06 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
python 简单的调用有道翻译
2020/11/25 Python
python中二分查找法的实现方法
2020/12/06 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
教学器材管理制度
2014/01/26 职场文书
房产代理公证处委托书
2014/04/04 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
培训研修方案
2014/06/06 职场文书