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文件操作之目录遍历实例分析
May 20 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
python入门教程之识别验证码
Mar 04 Python
Python中实现最小二乘法思路及实现代码
Jan 04 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
Python logging模块用法示例
Aug 28 Python
详解python编译器和解释器的区别
Jun 24 Python
Python中Subprocess的不同函数解析
Dec 10 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Python 代码调试技巧示例代码
Aug 11 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 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执行zip与rar解压缩方法实现代码
2010/12/05 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
python计算一个序列的平均值的方法
2015/07/11 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python实现周期方波信号频谱图
2018/07/21 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Python 加密与解密小结
2018/12/06 Python
24式加速你的Python(小结)
2019/06/13 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
小学优秀教育工作者事迹材料
2014/05/09 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
法律进社区活动总结
2015/05/07 职场文书
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL