电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python利用socket實現udp文件傳輸功能

瀏覽:105日期:2022-08-07 17:31:04

本文實例為大家分享了UDP實現文件傳輸的具體代碼,供大家參考,具體內容如下

tcp進行文件傳輸看這里–python實現TCP文件接發

這里實現的接收方一直接收,發送方每次發送一個文件,方便我在其他函數中調用發送文件。

使用udp 容易出現丟包現象需要處理

要注意 tcp 和udp的套接字不一樣

# udp:udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)# tcptcp_socketr = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

1、發送

# import socket# import tqdm# import os# import threading## # 由客戶端向服務器傳數據,文件import threadingimport socketimport tqdmimport osimport cv2from time import ctime, sleepdef send(address, filename): # 傳輸數據間隔符 SEPARATOR = ’<SEPARATOR>’ # 服務器信息 host, port = address # 文件緩沖區 Buffersize = 4096*10 # 傳輸文件名字 filename = filename # 文件大小) file_size = os.path.getsize(filename) # 創建socket鏈接 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) print(f’服務器連接中{host}:{port}’) s.connect((host, port)) print(’與服務器連接成功’) # 發送文件名字和文件大小,必須進行編碼處理 # s.sendto(f’{filename}{SEPARATOR}{file_size}’.encode(), ('127.0.0.1', 1234)) s.send(f’{filename}{SEPARATOR}{file_size}’.encode(’utf-8’)) # 文件傳輸 progress = tqdm.tqdm(range(file_size), f’發送{filename}’, unit=’B’, unit_divisor=1024) with open(filename, ’rb’) as f:# 讀取文件for _ in progress: bytes_read = f.read(Buffersize) # print(bytes_read) if not bytes_read:print(’exit退出傳輸,傳輸完畢!’)s.sendall(’file_download_exit’.encode(’utf-8’))break # sendall 確保絡忙碌的時候,數據仍然可以傳輸 s.sendall(bytes_read) progress.update(len(bytes_read)) sleep(0.001) # 關閉資源 s.close()if __name__ == ’__main__’: address = (’127.0.0.1’, 1234) # host = ’127.0.0.1’ # port = 1234 filename = input(’請輸入文件名:’) t = threading.Thread(target=send, args=(address, filename)) t.start() # received(address, filename)

2、接收

import socketimport tqdmimport osimport threading# 使用UDP傳輸視頻,全雙工,但只需一方接,一方收即可# 設置服務器的ip和 port# 服務器信息# sever_host = ’127.0.0.1’# sever_port =1234def recvived(address, port): # 傳輸數據間隔符 SEPARATOR = ’<SEPARATOR>’ # 文件緩沖區 Buffersize = 4096*10 while True:print(’準備接收新的文件...’)udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)udp_socket.bind((address, port))recv_data = udp_socket.recvfrom(Buffersize)recv_file_info = recv_data[0].decode(’utf-8’) # 存儲接收到的數據,文件名print(f’接收到的文件信息{recv_file_info}’)c_address = recv_data[1] # 存儲客戶的地址信息# 打印客戶端ipprint(f’客戶端{c_address}連接’)# recv_data = udp_socket.recv()# 接收客戶端信息# received = udp_socket.recvfrom(Buffersize).decode()filename ,file_size = recv_file_info.split(SEPARATOR)# 獲取文件的名字,大小filename = os.path.basename(filename)file_size = int(file_size)# 文件接收處理progress = tqdm.tqdm(range(file_size), f’接收{filename}’, unit=’B’, unit_divisor=1024, unit_scale=True)with open(’8_18_’+filename,’wb’) as f: for _ in progress:# 從客戶端讀取數據bytes_read = udp_socket.recv(Buffersize)# 如果沒有數據傳輸內容# print(bytes_read)if bytes_read == b’file_download_exit’: print(’完成傳輸!’) print(bytes_read) break# 讀取寫入f.write(bytes_read)# 更新進度條progress.update(len(bytes_read))udp_socket.close()if __name__ == ’__main__’: # address = ('127.0.0.1', 1234) port = 1234 address = '127.0.0.1' t = threading.Thread(target=recvived, args=(address, port)) t.start() # send(address)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 劳动法网-专业的劳动法和劳动争议仲裁服务网 | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 | 光伏家 - 太阳能光伏发电_分布式光伏发电_太阳能光伏网 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 水轮机密封网 | 水轮机密封产品研发生产厂家 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 上海赞永| 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 金库门,金库房,金库门厂家,金库门价格-河北特旺柜业有限公司 | 注塑_注塑加工_注塑模具_塑胶模具_注塑加工厂家_深圳环科 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 博医通医疗器械互联网供应链服务平台_博医通| 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 最新范文网_实用的精品范文美文网 | 玻璃钢罐_玻璃钢储罐_盐酸罐厂家-河北华盛节能设备有限公司 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 高博医疗集团上海阿特蒙医院| 喷漆房_废气处理设备-湖北天地鑫环保设备有限公司 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 中矗模型-深圳中矗模型设计有限公司 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 超声波反应釜【百科】-以马内利仪器 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 |