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函数嵌套实例
Sep 23 Python
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
Python向excel中写入数据的方法
May 05 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
Python 实现平台类游戏添加跳跃功能
Mar 27 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 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
ThinkPHP标签制作教程
2014/07/10 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
window.open的功能全解析
2006/10/10 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
JSON Web Tokens的实现原理
2017/04/02 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python的Tqdm模块的使用
2018/01/10 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
写自荐信有哪些不宜?
2013/10/17 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
档案管理员岗位职责
2013/12/01 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
大型活动组织方案
2014/05/10 职场文书
师德师风整改措施
2014/10/24 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
西游降魔篇观后感
2015/06/15 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS