數(shù)據(jù)傳輸進程子面板
Tcp傳輸文件夾的任務也完成了,想要把程序做的完美一點,于是想起了win8中在copy文件或文件夾時的傳輸進程面板,顯示了要從何位置傳輸多少文件到何位置,已傳輸多少的進度條還有顯示實時速度和平均速度的圖標,于是我借鑒了win8的做法,想要實現(xiàn)這樣一個功能,使得數(shù)據(jù)傳輸過程更加清晰。下圖為win8系統(tǒng)傳輸文件的面板
本文引用地址:http://2s4d.com/article/201701/336636.htm二.
做一個一樣的子面板并不難,然而子面板和主程序的通信與控制將成為重點。類似于上面的面板,子面板需要以下的數(shù)據(jù)信息:被傳輸?shù)奈募ɑ蛭募A)名稱,數(shù)量,絕對路徑,接受的它的IP地址,當前已傳輸?shù)谋壤?,實時傳輸速度,平均速度。以上信息都要通過主程序傳輸給子面板,傳輸方式就是我上一篇文章中講到的隊列。
三.
程序的程序設計思路框圖沒什么可說的,就是在tcp的傳輸子循環(huán)中把生成的上面所需要的信息組成一個簇以隊列的方式發(fā)送給子面板,子面板經(jīng)過相關計算后顯示在子面板的前面板,主程序接收后同時關閉子面板即可,下面分別說以下每一部分的具體程序框圖。
1.
首先主程序中通過一系列的數(shù)據(jù)組合,還有類似已傳輸量,總運行時間,這些數(shù)據(jù)都需要通過移位寄存器進行累計,最后組成一個簇,然后發(fā)給隊列,這個簇包含以下信息(按順序敘述):已傳輸文件個數(shù),初始時間(開始傳輸?shù)挠嫊r時間),文件路徑,客戶IP地址,文件個數(shù),文件總量(B),已傳輸總量(B),每次傳輸量形成的數(shù)組,實時速度(發(fā)送每一小段的速度)構(gòu)成的數(shù)組,當前時間(計時器計時的當前時間);
接下來用隊列發(fā)送數(shù)據(jù)給子Vi,隊列的數(shù)據(jù)格式為簇的格式,同時我們需要設定該循環(huán)停止的條件就是n個文件中的n-1個文件已經(jīng)傳輸完畢,并且第n個結(jié)束傳輸信號為真,這樣就關閉子Vi,然后關閉該循環(huán)。
2.
經(jīng)過設計,子面板的主界面如下圖所示
上圖中進度條和圖標顯示的很明白,其中兩個藍色按鈕本來是模仿win8中的兩個按鈕分別用來暫停傳輸和取消傳輸?shù)?,但是由于程序目前還木有做這一部分,所以這個問題以后再說,兩個按鈕左邊的空白就是顯示從何處傳輸何數(shù)據(jù)給何地址的空白,下面對后面板程序做一簡單說明。
其他的數(shù)據(jù)大多是直接傳輸顯示的,還有幾個例如平均速度,文件路徑等是經(jīng)過了一定的處理后在界面上顯示的,而圖表相對麻煩一點
圖表的x軸是已經(jīng)傳輸?shù)陌俜直?,總長為100%,這需要把每一小塊傳輸結(jié)束后所傳輸?shù)目偭坑脭?shù)組保存,然后通過一個for循環(huán)讓數(shù)組的每一個值除以總的需要傳輸?shù)牧烤褪莤軸的數(shù)據(jù);而y軸顯示的是x軸所對應的每一小塊傳輸?shù)臅r候的實時速度,然后也將它們累計起來成一個數(shù)組作為xy圖的y輸入數(shù)組即可,這一部分實現(xiàn)以以后程序就基本結(jié)束了。
評論