電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>局域網(wǎng)發(fā)布共享文件xml-rpc實(shí)現(xiàn)的文件共享

局域網(wǎng)發(fā)布共享文件xml-rpc實(shí)現(xiàn)的文件共享

2022-05-30 | zip | 0.01 MB | 次下載 | 2積分

資料介紹

授權(quán)協(xié)議 GPL
開發(fā)語言 Python
軟件類型 開源軟件

軟件簡介

xml-rpc 實(shí)現(xiàn)的文件共享

這個項(xiàng)目取材與http://www.the5fire.com/python-project8-xml-rpc.html 。是python基礎(chǔ)教程中的十個例子中的第八個。主要的實(shí)現(xiàn)原理如下:

每一個客戶端都是一個節(jié)點(diǎn)。每一個節(jié)點(diǎn),都啟動一個 xml-rpc服務(wù)器。在 xml-rpc服務(wù)器中,維護(hù)著一個所有節(jié)點(diǎn)的集合。原文的例子,功能太少,只能下載。后來我加了一個ls 命令,可以查看包括自己的和所有節(jié)點(diǎn)的文件。原項(xiàng)目中的節(jié)點(diǎn)列表,必須是手動給出的,相當(dāng)麻煩,是通過一個叫urlfile的文件來維護(hù)的。在我的這個項(xiàng) 目中,維護(hù) 節(jié)點(diǎn)的信息是通過程序自己學(xué)習(xí)到的。每當(dāng)一個節(jié)點(diǎn)啟動的時候,該節(jié)點(diǎn)就會把自己的xml-rpc服務(wù)器的訪問url,通過udp廣播的方式,廣播給某一個 端口。同時每一個節(jié)點(diǎn),只要它啟動后,會監(jiān)聽某一個端口上的,有關(guān)xml-rpc服務(wù)器的訪問url的監(jiān)聽。只要收到信息,就把它寫入到節(jié)點(diǎn)列表中。通過 fetch下載文件時,如果發(fā)現(xiàn)了異常,則從節(jié)點(diǎn)列表中刪除它。

現(xiàn)在假如有兩個節(jié)點(diǎn)(啟動了client.py文件的機(jī)器) a和b,a中的節(jié)點(diǎn)列表中有b,同樣b中也有,當(dāng)a嘗試著fetch 一個文件時,如果沒有在a中查找到的話,則會去找b,但是b中的節(jié)點(diǎn)列表是a,b會去找a。。。。。這樣就形成了阻塞。原項(xiàng)目中,是通過一個url列表來 維護(hù)的。但是這個項(xiàng)目中,a機(jī)器對于自己的url是localhost,b也是localhost,但是對于a來講b就不是localhost。所以我的 項(xiàng)目中,是通過維護(hù)一個secret列表來判斷,下一個要查找的節(jié)點(diǎn)是不是已經(jīng)被查過了。但是同時得先知道下一個節(jié)點(diǎn)的secret值,但是如果下一節(jié)點(diǎn) 就是上一個節(jié)點(diǎn)的話,還是會有阻塞,所以把xml-rpc做成多線程就很必要了。新構(gòu)建一個類class ThreadRPC(ThreadingMixIn, SimpleXMLRPCServer) 。這樣ThreadRPC就變成了多線程的SimpleXMLRPCServer。

本來文件的傳輸是使用了xml-rpc。后來我把它獨(dú)立出來了。單獨(dú)作為一個文件傳輸服務(wù),TranServer。這個文件傳輸,不使用xml- rpc,而是直接用socket。用了SocketServer框架。本來是想用asynchat的。但是后來發(fā)現(xiàn),這個異步框架,有點(diǎn)蛋疼。比如說它的 push方法。是會把數(shù)據(jù)放到叫producer_fifo的fifo數(shù)據(jù)結(jié)構(gòu)中。這個做會出現(xiàn)一個大問題。我讀本地的文件速度遠(yuǎn)遠(yuǎn)快于發(fā)送的數(shù)度,當(dāng)體 積大的時候,更是如此。所以使用push傳輸,會發(fā)現(xiàn)內(nèi)存占用越來越大,越來越大。。。如果不使用push,而是使用send,會發(fā)現(xiàn)數(shù)據(jù)不同步.鑒于這 些問題,所以我沒有采用異步,而是使用了多線程的SocketServer, ThreadingMixIn

配置文件

[global]

# 監(jiān)聽節(jié)點(diǎn)的端口

listen_port = 1111

# 數(shù)據(jù)傳送的端口

data_port = 1234

# 要共享的目錄

share_dir = /tmp/a

使用方法

啟動節(jié)點(diǎn) : python client.py

獲取文件列表: ls

下載文件: fetch xxx

查看文件內(nèi)容: cat xxx [要查看的前n位]

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)