日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 实现超大文件传输、断点续传等功能

發布時間:2024/3/26 C# 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 实现超大文件传输、断点续传等功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 一、說明
    • 二、程序集源碼
        • 2.1 源碼位置
        • 2.2 說明文檔
    • 三、安裝
    • 四、特點
        • 1.1 文件傳輸協議兼容性
        • 1.2 與FTP相比
        • 1.3 功能亮點
    • 四、創建服務器
    • 五、創建客戶端
    • 六、總結


文章目錄

    • 一、說明
    • 二、程序集源碼
        • 2.1 源碼位置
        • 2.2 說明文檔
    • 三、安裝
    • 四、特點
        • 1.1 文件傳輸協議兼容性
        • 1.2 與FTP相比
        • 1.3 功能亮點
    • 四、創建服務器
    • 五、創建客戶端
    • 六、總結


一、說明

經常有小伙伴在開發控制臺winformWPF等C/S軟件時,會有文件傳輸的需求。正好RRQMSocket.RPC完美支持這個,所以給大家介紹一波。


二、程序集源碼

2.1 源碼位置

  • Gitee
  • Github

2.2 說明文檔

文檔首頁

三、安裝

Nuget安裝RRQMSocket.RPC即可,具體步驟詳看鏈接博客。

VS、Unity安裝和使用Nuget包

四、特點

1.1 文件傳輸協議兼容性

RRQM文件傳輸使用的是特殊傳輸協議,與FTP,HTTP等協議完全不兼容,所以如果使用文件傳輸,則服務器與客戶端必須均使用RRQM組件。

1.2 與FTP相比

因為RRQM使用的是特殊協議,所以性能、功能上要遠強于FTP,且搭建簡單,支持多通道傳輸等。

1.3 功能亮點

  • 簡單易用。
  • 多線程處理。
  • 高性能,實測傳輸速度可達1000Mb/s
  • 超簡單的傳輸限速設置,1k-10Gb 無級調節。
  • 超簡單的傳輸速度、傳輸進度獲取。
  • 隨心所欲的暫停、繼續、停止傳輸。
  • 系統化的權限管理,讓敏感文件只允許私有化下載
  • RPC交互,讓客戶端和服務器交流不延遲。
  • 基于事件驅動,讓每一步操作盡在掌握。
  • 超簡單的斷點續傳設置,為大文件傳輸保駕護航。
  • 已經上傳的文件,再次上傳時,可實現快速上傳
  • 極少的GC釋放。

演示: 可以看到,下圖正在上傳一個Window的系統鏡像文件,大約4.2Gb,傳輸速度已達到800Mb/s,GC基本上沒有釋放,性能非常強悍(中間有稍微停頓,因為程序在獲取文件MD5值)。


四、創建服務器

static void Main(string[] args) {TcpTouchRpcService service = GetService();service.Logger.Message("服務器成功啟動");Console.ReadKey(); }static TcpTouchRpcService GetService() {var service = new RRQMConfig()//配置 .SetListenIPHosts(new IPHost[] { new IPHost(7789) }).SetMaxCount(10000).SetThreadCount(100).SetSingletonLogger(new LoggerGroup(new ConsoleLogger(), new FileLogger())).SetVerifyToken("File")//連接驗證口令。.BuildWithTcpTouchRpcService();//此處build相當于new TcpTouchRpcService,然后Setup,然后Start。service.Handshaked += (client, e) =>{client.Logger.Message($"有客戶端成功驗證,ID={client.ID}");};service.Disconnected += (client, e) =>{client.Logger.Message($"有客戶端斷開,ID={client.ID}");};service.FileTransfering += (client, e) =>{//有可能是上傳,也有可能是下載client.Logger.Message($"有客戶端請求傳輸文件,ID={client.ID},請求類型={e.TransferType},請求文件名={e.FileRequest.Path}");};service.FileTransfered += (client, e) =>{//傳輸結束,但是不一定成功,需要從e.Result判斷狀態。client.Logger.Message($"客戶端傳輸文件結束,ID={client.ID},請求類型={e.TransferType},文件名={e.FileRequest.Path},請求狀態={e.Result}");};return service; }

五、創建客戶端

static void Main(string[] args) {TcpTouchRpcClient client = new RRQMConfig().SetRemoteIPHost("127.0.0.1:7789").SetVerifyToken("File").BuildWithTcpTouchRpcClient();client.FileTransfering += (client, e) =>{//有可能是上傳,也有可能是下載client.Logger.Message($"服務器請求傳輸文件,ID={client.ID},請求類型={e.TransferType},文件名={e.FileInfo.FileName}");};client.FileTransfered += (client, e) =>{//傳輸結束,但是不一定成功,需要從e.Result判斷狀態。client.Logger.Message($"服務器傳輸文件結束,ID={client.ID},請求類型={e.TransferType},文件名={e.FileInfo.FileName},請求狀態={e.Result}");};client.Logger.Message("連接成功");//第一個參數是請求路徑,第二個是保存路徑。FileRequest fileRequest = new FileRequest(@"D:\System\Windows.iso", $@"Windows.iso");fileRequest.Flags = TransferFlags.BreakpointResume;//嘗試斷點續傳,使用斷點續傳時,會驗證MD5值FileOperator fileOperator = new FileOperator();//實例化本次傳輸的控制器,用于獲取傳輸進度、速度、狀態等。fileOperator.Timeout = 60 * 1000;//當傳輸大文件,且啟用斷點續傳時,服務器可能會先計算MD5,而延時響應,所以需要設置超時時間。//此處的作用相當于Timer,定時每秒輸出當前的傳輸進度和速度。LoopAction loopAction = LoopAction.CreateLoopAction(-1, 1000, (loop) =>{if (fileOperator.Result.ResultCode != ResultCode.Default){loop.Dispose();}client.Logger.Message($"進度:{fileOperator.Progress},速度:{fileOperator.Speed()}");});loopAction.RunAsync();Metadata metadata = new Metadata();//傳遞到服務器的元數據metadata.Add("1", "1");metadata.Add("2", "2");//此方法會阻塞,直到傳輸結束,也可以使用PullFileAsyncIResult result = client.PullFile(fileRequest, fileOperator, metadata);client.Logger.Message(result.ToString());Console.ReadKey(); }

六、總結

實際上,文件傳輸功能,在客戶端之間也可以直接傳輸,服務器也可以直接向客戶端主動Pull、Push文件。而且,對于TouchRpc而言,文件傳輸也僅僅是的其中一個功能而已,更多的功能請在說明文檔獲取。

總結

以上是生活随笔為你收集整理的C# 实现超大文件传输、断点续传等功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲天堂不卡 | 成年人网站在线观看视频 | youjizz日韩| 欧美第五页 | 国产探花在线精品一区二区 | 日本a级片在线播放 | 精品国偷自产一区二区三区 | 亚洲欧美日本在线观看 | 手机天堂av | 久久久久久久久久福利 | 在线观看三级网站 | 男人和女人在床的app | 极品美妇后花庭翘臀娇吟小说 | 天堂а√在线最新版中文在线 | 性开放的欧美大片 | 久久精品欧美一区 | 色图综合 | 国产精品一二三四五 | 欧美视频在线观看一区二区三区 | 国产午夜亚洲精品午夜鲁丝片 | 诱夫1v1高h| 欧美在线观看一区 | 九九热精品视频在线播放 | 影音先锋亚洲精品 | 国产日韩欧美 | 夜夜欢天天干 | 18禁一区二区 | 五月婷婷爱 | 成人在线手机视频 | 成人免费看视频 | 国产性―交一乱―色―情人 | 国产精品无码天天爽视频 | 色狠狠久久av大岛优香 | 亚洲av无码潮喷在线观看 | 国产又大又长又粗 | 久久免费视频99 | 日韩三级一区二区 | 三浦理惠子av在线播放 | 精品欧美一区二区在线观看 | 黄色香港三级三级三级 | 国产精品伦一区二区三级古装电影 | 91久久伊人 | 九九九九精品 | 美女福利影院 | 女人被男人操 | 国产精品婷婷午夜在线观看 | 久热久操| 欧美日韩黄色片 | 国产手机看片 | 精品爆乳一区二区三区无码av | 99日韩| 日韩和欧美的一区二区 | 四季av日韩精品一区 | 东方av在线免费观看 | 天天夜夜骑 | 96av在线 | www.黄色免费 | 国产高清无密码一区二区三区 | 在线视频一区二区三区四区 | 一级肉体全黄裸片中国 | 成人亚洲欧美 | 污污网站在线 | 6080一级片| 精品国产96亚洲一区二区三区 | 青草福利在线 | 色激情五月 | 日韩激情视频 | 1769国产精品视频 | 亚洲一区二区免费电影 | 一级黄色片看看 | 99久久精品日本一区二区免费 | 自拍偷拍日韩 | 99日韩精品| 国产日韩欧美激情 | 亚洲丝袜在线视频 | 1024香蕉视频 | 教练含着她的乳奶揉搓揉捏动态图 | 91麻豆产精品久久久久久夏晴子 | 黄片毛片在线免费观看 | 免费h漫禁漫天天堂 | 中文在线免费视频 | 亚洲美女福利视频 | 国产精品www.| 少妇裸体挤奶汁奶水视频 | 国产资源免费 | 亚洲精品成人片在线观看精品字幕 | 一区二区三区资源 | 97超碰精品| 四虎永久在线视频 | 亚洲区欧美| 一级黄色片在线看 | 91中文字幕在线播放 | 国产一区二区三区四区 | 久久片 | 91欧美亚洲| 欧洲黄色片 | 国模无码视频一区二区三区 | 亚洲精品欧美激情 | 高潮无码精品色欲av午夜福利 |