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-10Python之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-09python利用requests庫模擬post請求時json的使用教程
這篇文章主要介紹了python利用requests庫模擬post請求時json的使用 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-12-12Python下實現(xiàn)的RSA加密/解密及簽名/驗證功能示例
這篇文章主要介紹了Python下實現(xiàn)的RSA加密/解密及簽名/驗證功能,結合具體實例形式分析了Python中RSA加密、解密的實現(xiàn)方法及簽名、驗證功能的使用技巧,需要的朋友可以參考下2017-07-07Python中實現(xiàn)ipaddress網(wǎng)絡地址的處理
ipaddress庫提供了處理IPv4與IPv6網(wǎng)絡地址的類。這些類支持驗證,查找網(wǎng)絡上的地址和主機,以及其他常見的操作,本文就來介紹一下這些方法的使用,感興趣的一起來了解一下2021-06-06