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升级导致yum、pip报错的解决方法
Sep 06 Python
Python之自动获取公网IP的实例讲解
Oct 01 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
详解Django之admin组件的使用和源码剖析
May 04 Python
python中验证码连通域分割的方法详解
Jun 04 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
关于python3中setup.py小概念解析
Aug 22 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
Pytorch Tensor的统计属性实例讲解
Dec 30 Python
python上selenium的弹框操作实现
Jul 13 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 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+MYSQL 出现乱码的解决方法
2008/08/08 PHP
php下获取客户端ip地址的函数
2010/03/15 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
javascript smipleChart 简单图标类
2011/01/12 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
python中open函数的基本用法示例
2019/09/07 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
Django设置Postgresql的操作
2020/05/14 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
护士自我鉴定总结
2014/03/24 职场文书
大学社团计划书
2014/05/01 职场文书
酒店开业主持词
2015/07/02 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL