python实现UDP协议下的文件传输

本文实例为大家分享了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大小的文件,运行后查看服务器端信息:

客户端上查看传输时延:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 使用Python的Flask框架实现视频的流媒体传输

    Flask 是一个 Python 实现的 Web 开发微框架.这篇文章是一个讲述如何用它实现传送视频数据流的详细教程. 我敢肯定,现在你已经知道我在O'Reilly Media上发布了有关Flask的一本书和一些视频资料.在这些上面,Flask框架介绍的覆盖面是相当完整的,出于某种原因,也有一小部分的功能没有太多的提到,因此我认为在这里写一篇介绍它们的文章是一个好主意. 这篇文章是专门介绍流媒体的,这个有趣的功能让Flask应用拥有这样一种能力,以分割成小数据块的方式,高效地为大型请求提供数据,

  • Python实现的简单文件传输服务器和客户端

    还是那个题目(题目和流程见java版本),感觉光用java写一点新意也没有,恰巧刚学习了python,何不拿来一用,呵呵: 服务器端: import SocketServer, time class MyServer(SocketServer.BaseRequestHandler): userInfo = { 'yangsq' : 'yangsq', 'hudeyong' : 'hudeyong', 'mudan' : 'mudan' } def handle(self): print 'Con

  • python实现udp传输图片功能

    本文实例为大家分享了python实现udp传输图片的具体代码,供大家参考,具体内容如下 首先要了解UDP的工作模式 对于服务器,首先绑定IP和端口,本机测试的时候可以使用127.0.0.1是本机的专有IP,端口号 大于1024的是自定义的,所以用大于1024的端口号,然后接收客户端数据,处理,返回 对于客户端,UDP不用建立连接,只管发送不管接收到没有,所以可以直接对服务器的IP地址和端口号发送信息,然后等待应答. 注意传输的数据是二进制流数据,所以要找方法把需要传输的数据编码成二进制码流,传过

  • python实现TCP文件传输

    前几天已经讲过了UDP协议下大文件传输的python实现代码,今天再实现TCP协议下大文件传输的python实现代码. TCP和UDP的实现过程还是比较不一样的. 实现代码: 服务端: import socket import time s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',9999)) s.listen(5) print('Waiting for connection...') whil

  • python实现udp数据报传输的方法

    本文实例讲述了Python实现UDP数据报传输的方法,非常具有实用价值.分享给大家供大家参考.具体方法分析如下: 服务端代码: import socket port = 8081 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #从给定的端口,从任何发送者,接收UDP数据报 s.bind(("",port)) print 'waiting on port:',port while True: data,addr = s.recvf

  • Python实现基于HTTP文件传输实例

    本文实例讲述了Python实现基于HTTP文件传输的方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 因为需要最近看了一下通过POST请求传输文件的内容 并且自己写了Server和Client实现了一个简单的机遇HTTP的文件传输工具 二.实现代码: Server端: 复制代码 代码如下: #coding=utf-8 from BaseHTTPServer import BaseHTTPRequestHandler import cgi class   PostHandler(Base

  • python实现同一局域网下传输图片

    简述 Python可以通过网络套接字来进行传输图片 这点还是比较有意思的. 下面用TCP来进行实现,适用于Python3 代码功能简述 下面代码 实现了在一个电脑上发送图片(Sender) 实现了在另外一个电脑(也可以是同一个电脑上的不同端口)接受图片(Reciever) 只发一次,然后只收一次 新图片会在旧图片上多一个 "new_"前缀 必须要先开接受者代码才行,之后再启动发送者代码(不然发送者代码会直接被拒绝) 下面是固定了在一个电脑上(看ip地址,下面写的是127.0.0.1,如

  • Python爬虫抓取手机APP的传输数据

    大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 方法详细可以参考这篇博文:Fiddler如何抓取手机APP数据包 得到超级课程表登录的地址:http://120.55.151.61/V2/StudentSkip/loginCheckV4.action 表单: 表单中包括了用户名和密码,当然都是加密过了的,还有一个设备信息,直接post过去就是. 另外必须加header,一开始我没有加header得

  • python实现ftp文件传输功能

    本文实例为大家分享了python实现ftp文件传输的具体代码,供大家参考,具体内容如下 主要步骤可以分为以下几步: 1.读取文件名 2.检测文件是否存在 3.打开文件 4.检测文件大小 5.发送文件大小和 md5值给客户端 6.等客户端确认 7.开始边读边发数据 服务器端代码: import socket,os,time import hashlib server =socket.socket() server.bind(('0.0.0.0',6666)) server.listen() pri

  • python实现UDP协议下的文件传输

    本文实例为大家分享了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

  • 使用python编写udp协议的ping程序方法

    服务器端 import random from socket import * serverSocket = socket(AF_INET, SOCK_DGRAM)#建立udp协议的socket连接 serverSocket.bind(('', 12000)) while True: rand = random.randint(0, 10)#生成随机数,模拟udp环境下的丢包 message, address = serverSocket.recvfrom(1024)#接收客户端发送的信息,应该

  • python使用tcp实现局域网内文件传输

    本文为大家分享了python使用tcp实现局域网内文件传输的具体代码,供大家参考,具体内容如下 功能: 可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件. 实现需求: 安装socket模块 简单了解sokcet模块用法 服务器代码如下: import socket def file_deal(file_name): # 定义函数用于处理用户索要下载的文件 try: # 二进制方式读取 files = open(file_name, "rb") mes = f

  • python 获得任意路径下的文件及其根目录的方法

    似乎有一段时间没有更新博客了,这里就写点小功能,轻松获得电脑任意路径下的文件及文件夹,并将其写入word,以下是主要代码: **import os** **from os import walk** # 获取文件夹的中的文件夹和文件夹里文件 def do_file(save_filepath,o_filepath): #定义函数 传入写入文档保存的位置和要操作的任意电脑路劲 file=open(save_filepath,"w+") # 遍历文件路径 for parent,dirnam

  • 使用python将微信image下.dat文件解密为.png的方法

    用清理软件清理电脑垃圾的时候,发现微信存了很多图片,进入路径一看,全是以.dat为格式的文件: 尝试了直接把后缀名的.dat 改 .jpg和.png,都打不开,感觉事情没那么简单,随后立刻度娘了一下,并找到了代码.下面一步一步的来看一下. 微信客户端保存的路径一般是这样的,相信你能找到. F:\Users\Tencent Files\WeChat Files\wxid_\FileStorage\Image\2020-11 就可以发现里面保存了一堆.dat格式的东西,微信保存的这个格式是16进制存

  • Linux网络编程之基于UDP实现可靠的文件传输示例

    了解网络传输协议的人都知道,采用TCP实现文件传输很简单.相对于TCP,由于UDP是面向无连接.不可靠的传输协议,所以我们需要考虑丢包和后发先至(包的顺序)的问题,所以我们想要实现UDP传输文件,则需要解决这两个问题.方法就是给数据包编号,按照包的顺序接收并存储,接收端接收到数据包后发送确认信息给发送端,发送端接收确认数据以后再继续发送下一个包,如果接收端收到的数据包的编号不是期望的编号,则要求发送端重新发送. 下面展示的是基于linux下C语言实现的一个示例程序,该程序定义一个包的结构体,其中

  • Python如何实现自带HTTP文件传输服务

    一行命令搭建一个基于python的http文件传输服务 由于今天朋友想要一个文件,而我恰好有,因为这个文件比较大,网速不是很给力,所以想到了python自己有这么一个功能,这样不仅不需要下载其他软件,下载速度也是噌噌的 2333333 python -m http.server -b 127.0.0.1 (-b 绑定ip,不指定的话默认是本机ip) 这个是python自带的一个功能,这个功能便于我们传输一些文件,当服务开启后,我们就可以通过浏览器看到当前路径下的所有文件及文件夹(这里的路径是cm

  • Python删除指定目录下过期文件的2个脚本分享

    脚本1: 这两天用python写了一个删除指定目录下过期时间的脚本.也可能是我初学python,对python还不够熟习,总觉得这个脚本用shell写应该更简单也更容易些.就功能上来说,该脚本已经实现了我想要的效果,不过该脚本还不够通用性,还有更多可以完善的地方.目前该脚本在python2.4下运行良好.同时,我在脚本中加入了对python版本的判断,理论上2.7下也应该可以正常使用.有环境的朋友可以帮忙测试一下.该脚本不完善的地方在于,只能支持一级目录下的文件删除,还不支持目录递归.同时过期文

  • Python 如何获取目录下的文件列表,并自然排序

    在实际的算法与程序开发中,经常需要面对的场景就是对同一目录内的文件进行批量操作. 并且很多时候目录中的文件明明是有规律的,同时希望程序在进行处理时也是按照一定的顺序进行. 方法 1 >>> import os >>> fileList = os.listdir('TestDir') >>> fileList ['test1.txt', 'test10.txt', 'test11.txt', 'test2.txt', 'test23.txt', 'tes

  • Python实现HTTP协议下的文件下载方法总结

    本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙. 1.简单文件下载 使用htttplib2,具体代码如下: h = httplib2.Http() url = 'http://www.jb51.net/ip.zip' resp, content = h.request(url) if resp['status'] == '200': with open(filename, 'wb') as f: f.write(content)

随机推荐