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中字典的循环遍历的两种方式
Feb 07 Python
Python自定义线程池实现方法分析
Feb 07 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
python django model联合主键的例子
Aug 06 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
Python算法中的时间复杂度问题
Nov 19 Python
python通过matplotlib生成复合饼图
Feb 06 Python
Python学习笔记之装饰器
Aug 06 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 Python
Python截图并保存的具体实例
Jan 14 Python
python垃圾回收机制原理分析
Apr 13 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生成PDF方法详解
2015/01/23 PHP
php判断表是否存在的方法
2015/06/18 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python paramiko模块的使用示例
2018/04/11 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
写演讲稿要注意的六件事
2014/01/14 职场文书
网络营销策划方案
2014/06/04 职场文书
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技