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中用Decorator来简化元编程的教程
Apr 13 Python
Python while 循环使用的简单实例
Jun 08 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
Python3 A*寻路算法实现方式
Dec 24 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
浅析Python中的套接字编程
Jun 22 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
jquery禁用右键示例
2014/04/28 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
python中二维阵列的变换实例
2014/10/09 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
Python如何将字符串转换为日期
2020/07/31 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
CSS3 旋转立方体问题详解
2020/01/09 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
行政工作试用期自我评价
2014/09/14 职场文书
mysql脏页是什么
2021/07/26 MySQL
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript