内网python 仓库_GitHub - xanarry/LanTrans-desktop: 这是一个用python写的局域网传文件工具, 跨平台, 仓库中还有安卓版的工程...
文檔(代碼比較亂)
ubuntu效果
windows效果
主程序, Lantans_desktop.py 運行時所需環境: python3.4, PyQT5
如果接收過程無法被掃描到, 請關閉防火墻
接收文件
使用:
打開軟件->選擇 接受 ->選擇保存路徑->點擊 等待接收, 然后等待局域網中的發送方即可.
注意:
如果長時間沒后得到傳輸文件的文件, 請確保文件的發送者在線
發送文件
使用:
打開軟件->點Add file選擇要發送的文件(可以是多個文件)->點擊搜索主機->等待狀態欄提示紅色->點 開始 開始傳輸
注意事項:
最佳的傳輸方案接收方先打開客戶端, 等待接收, 然后發送方再發送
如果是發送方先開始活動, 發送方會首先向局域網中廣播10秒鐘的信息, 如果10秒鐘內任然沒有發現接收方, 請確定接收方在局域網內, 或者網絡連通性, 可以不斷嘗試多次搜索接受者
已知問題:
傳輸過程中速度時快時慢, 不知道為什么
文件名中不要有"`"符號, 否則保存文件的文件名會錯亂, 嚴重會導致程序崩潰
開發者文檔:
項目使用python3.4 + PyQt5開發, linux windows跨平臺使用
概述:
如何確定接收者?
確定兩端用戶使用UDP連接, 當用戶要發送文件時, (client)會向整個局域網中廣播信息(發送的信息是本機的網絡主機名), 持續廣播10秒, 每隔2秒廣播一次, 如果在廣播的過程中發現了文件接收者, 那么接收者(server)在收到client發送的信息后, 將傳輸文件將使用的[端口號]發送給文件發送者(client), 接著接收方就打開TCP服務端等待發送方client發起TCP連接請求, 建立TCP連接后, 即可開始相互傳輸文件
如果傳輸文件?
在發送方(TCP client)與接收方(TCP server)建立了TCP連接之后:
發送方
將本次要發送的文件的描述信息發給接收方. 用于接收方通過信息生成GUI傳輸列表信息描述信息格式要求:同一個文件的文件名和長度用~隔開, 文件之間使用|隔開.
格式如下:
字符串
java代碼描述:
for (File f in files) {
msg += f.getname() + "~" + file.length + "`";
}
等待接收方的回復, 接收方會將上述的文件描述回發給發送方
進入循環開始發送文件:
a.在發每一個文件之前, 發送方會本次發送文件的描述, 格式如上, 字符串
b.等待接收方的確認
c.開始文件字節發送, 直到該文件發送完
d.等待接收方發送確認信息, 確保文件完成發送, 進行下一個文件的傳輸
接收方
1.接收發送方發的文件(可能是多個)描述, 然后根據文件描述生成GUI文件傳輸列表
2.進入循環等待發送方發送文件
a.接收本次要接收的文件描述
b.發送確認信息
c.開始接收文件, 直到接收到的字節數和文件描述中的一致
d.發送確認信息, 進行下一個文件的接收
注意:
1.每次發文件之前都發送文件描述是為了防止連續穿兩個文件導致的字節粘滯, 比如說文件1大小為1000字節, 文件2大小為24字節, 程序一次讀取1024字節, 如果沒有確認信息的話, 發送方發完1000字節后接著發24字節, 然后接收方一次接收了1024字節, 最終導致, 第一個文件錯誤, 第二個文件字節流丟失
2.如何確認端口號?
程序啟動時端口設為65500端口, 發送方和接收方的角色每轉換(程序未關閉的情況下發送者變為接收者, 接收者變為發送者)一次, 將端口號減一, 以避免地址已被占用的情況, 因為, 程序放棄一個TCP連接時, 操作系統并不會立即釋放這個連接
總結
以上是生活随笔為你收集整理的内网python 仓库_GitHub - xanarry/LanTrans-desktop: 这是一个用python写的局域网传文件工具, 跨平台, 仓库中还有安卓版的工程...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我xp电脑桌面没有计算机图标不见了,xp
- 下一篇: form提交后台注解拿不到数据_浏览器是