python實現(xiàn)UDP協(xié)議下的文件傳輸
本文實例為大家分享了python實現(xiàn)UDP文件傳輸?shù)木唧w代碼,供大家參考,具體內(nèi)容如下
UDP協(xié)議下文件傳輸:
服務端
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大小的文件,運行后查看服務器端信息:

客戶端上查看傳輸時延:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- python網(wǎng)絡編程 使用UDP、TCP協(xié)議收發(fā)信息詳解
- python UDP(udp)協(xié)議發(fā)送和接收的實例
- python實現(xiàn)簡單tftp(基于udp協(xié)議)
- 使用python編寫udp協(xié)議的ping程序方法
- Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務端功能示例
- Python網(wǎng)絡編程之TCP與UDP協(xié)議套接字用法示例
- Python+Socket實現(xiàn)基于UDP協(xié)議的局域網(wǎng)廣播功能示例
- python3實現(xiàn)UDP協(xié)議的服務器和客戶端
- python實現(xiàn)的udp協(xié)議Server和Client代碼實例
- python 基于UDP協(xié)議套接字通信的實現(xiàn)
相關文章
Python反爬實戰(zhàn)掌握酷狗音樂排行榜加密規(guī)則
最新的酷狗音樂反爬來襲,本文介紹如何利用Python掌握酷狗排行榜加密規(guī)則,本章內(nèi)容只限學習,切勿用作其他用途?。。。?! 有需要的朋友可以借鑒參考下2021-10-10
Python之Django自動實現(xiàn)html代碼(下拉框,數(shù)據(jù)選擇)
這篇文章主要介紹了Python之Django自動實現(xiàn)html代碼(下拉框,數(shù)據(jù)選擇),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
使用Python和XPath解析動態(tài)JSON數(shù)據(jù)的操作指南
JSON動態(tài)數(shù)據(jù)在Python中扮演著重要的角色,為開發(fā)者提供了處理實時和靈活數(shù)據(jù)的能力,動態(tài)JSON數(shù)據(jù)的獲取可能涉及到網(wǎng)絡請求和API調(diào)用,可以使用Python和XPath來解析動態(tài)JSON數(shù)據(jù),接下來小編就給大家介紹一下操作步驟2023-09-09
python利用requests庫模擬post請求時json的使用教程
這篇文章主要介紹了python利用requests庫模擬post請求時json的使用 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-12-12
Python下實現(xiàn)的RSA加密/解密及簽名/驗證功能示例
這篇文章主要介紹了Python下實現(xiàn)的RSA加密/解密及簽名/驗證功能,結(jié)合具體實例形式分析了Python中RSA加密、解密的實現(xiàn)方法及簽名、驗證功能的使用技巧,需要的朋友可以參考下2017-07-07
Python中實現(xiàn)ipaddress網(wǎng)絡地址的處理
ipaddress庫提供了處理IPv4與IPv6網(wǎng)絡地址的類。這些類支持驗證,查找網(wǎng)絡上的地址和主機,以及其他常見的操作,本文就來介紹一下這些方法的使用,感興趣的一起來了解一下2021-06-06

