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