python实现UDP协议下的文件传输


Posted in Python onMarch 20, 2020

本文实例为大家分享了python实现UDP文件传输的具体代码,供大家参考,具体内容如下

UDP协议下文件传输:

服务端

import socket

count = 0
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_addr = ('127.0.0.1',9999)
s.bind(server_addr)

print('Bind UDP on 9999...')
while True:
 if count == 0:
  data,client_addr = s.recvfrom(1024)
  print('connected from %s:%s'%client_addr)
  f = open(data, 'wb')
 data, client_addr = s.recvfrom(1024)
 if str(data) != "b'end'":
  f.write(data)
  print('recieved '+str(count)+' byte')
 else:
  break
 s.sendto('ok'.encode('utf-8'),client_addr)
 count+=1
print('recercled'+str(count))
f.close()
s.close()

 # data, addr = s.recvfrom(1024)
 # print('Received from %s:%s' %addr)
 # s.sendto(b'Hello, %s!' %data, addr)

客户端

import socket
import os
import time

def Get_FilePath_FileName_FileExt(filename):
 filepath, tempfilename = os.path.split(filename)
 shotname, extension = os.path.splitext(tempfilename)
 return filepath, shotname, extension

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

filename = input('please enter the filename you want to send:\n')
filepath, shotname, extension = Get_FilePath_FileName_FileExt(filename)

client_addr = ('127.0.0.1',9999)
f = open(filename,'rb')
count = 0
flag = 1
while True:
 if count == 0:
  data = bytes(shotname+extension, encoding = "utf8")
  start = time.time()
  s.sendto(data,client_addr)
 data = f.read(1024)
 if str(data) != "b''":
  s.sendto(data,client_addr)
  print(str(count)+'byte')

 else:
  s.sendto('end'.encode('utf-8'),client_addr)
  break
 data, server_addr = s.recvfrom(1024)
 count+=1
print('recircled'+str(count))
s.close
end = time.time()
print('cost'+str(round(end-start,2))+'s')
# for data in [b'Michael',b'Tracy',b'Sarah']:
#  s.sendto(data,('127.0.0.1',9999))
#  print(s.recv(1024).decode('utf-8'))
# s.close()

此次试验为100000Byte大小的文件,运行后查看服务器端信息:

python实现UDP协议下的文件传输

客户端上查看传输时延:

python实现UDP协议下的文件传输

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用gzip模块压缩文件的简单教程
Apr 08 Python
详解Python字符串对象的实现
Dec 24 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
用python打印1~20的整数实例讲解
Jul 01 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
python实现TCP文件传输
Mar 20 #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
You might like
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
node.js实现多图片上传实例
2014/06/03 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
详解Bootstrap插件
2016/04/25 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
Python的requests网络编程包使用教程
2016/07/11 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
如何完美的建立一个python项目
2020/10/09 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
python创建字典及相关管理操作
2022/04/13 Python
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技