亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VC++的大文件傳輸軟件設(shè)計

        2013-12-31 00:00:00楊柳
        無線互聯(lián)科技 2013年10期

        摘 要:本文介紹了一種基于VC++的利用Socket進行TCP/IP連接,實現(xiàn)大文件傳輸?shù)姆椒?。本軟件采用多線程思想設(shè)計可以使程序開銷較小,運行更加流暢。

        關(guān)鍵詞:Socket;TCP/IP;多線程;大文件

        1 引言

        文件傳輸軟件是一種很常見的軟件,但是很多傳輸軟件對要傳送的文件的大小有要求,一般最大是4G,當傳輸?shù)奈募笥?G時就無法傳輸。本文設(shè)計的傳輸軟件幾乎可以不受文件大小的約束。而且系統(tǒng)開銷小,操作簡單。

        2 軟件設(shè)計

        2.1 套接字(Socket)

        套接字是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信單元??梢詫⑻捉幼挚醋鞑煌鳈C間的進程雙向通信的終點,它構(gòu)成了在單個主機內(nèi)及整個網(wǎng)絡(luò)間的編程界面。套接字有兩種不同的類型:流套接字和數(shù)據(jù)套接字。流套接字提供雙向的、有序的、無重復(fù)并且無記錄的數(shù)據(jù)流服務(wù),它適用于處理大量數(shù)據(jù)。數(shù)據(jù)套接字支持雙向的數(shù)據(jù)流,但并不保證數(shù)據(jù)傳輸?shù)目煽啃?、有序性和無重復(fù)性。因此,根據(jù)本文的設(shè)計的需要選擇流套接字。

        2.2 客戶機/服務(wù)器模型

        本軟件采用的是服務(wù)器客戶機的模式。一個服務(wù)程序通常在一個眾所周知的地址監(jiān)聽客戶對服務(wù)的請求,也就是說,服務(wù)進程一直處于休眠狀態(tài),知道一個客戶對這個服務(wù)的地址提出了連接請求。在這個時刻,服務(wù)程序被“驚醒”并且為客戶提供服務(wù)——對客戶的請求做出反應(yīng)。這一請求/響應(yīng)的過程可以簡單地用圖1表示。

        3 軟件的編程實現(xiàn)

        該軟件是在VC++6.0上編程實現(xiàn)的,下面介紹該軟件的幾個關(guān)鍵部分。

        3.1 大文件傳輸?shù)奶幚?/p>

        一般傳輸軟件設(shè)計的數(shù)據(jù)類型都是32位的,所以傳輸文件最大只能是4G。本文將文件大小的數(shù)據(jù)類型定義為64位,那么傳輸文件可以到234G,幾乎為無窮大。軟件的部分代碼如下:

        unsigned __int64 m_FileLength=0;

        m_FileLength=m_FileLength+StreamFileInfo.nFileSizeHigh;

        m_FileLength=m_FileLength<<32;

        m_FileLength=m_FileLength+StreamFileInfo.nFileSizeLow;

        其中m_FileLength為無符號的64為類型,存儲文件的長度。StreamFileIfo為文件信息結(jié)構(gòu)體類型,其中將文件的大小信息分割成長度為32位的兩部分,分別存在StreamFileInfo.nFileSizeHigh和StreamFileInfo.nFileSizeLow里面。

        3.2 多線程實現(xiàn)

        該軟件采用兩個線程,一個是接收線程UINT ReceiveDataThread(LPVOID lpParam);另一個是發(fā)送線程UINT SendDataThread(LPVOID pParam);當服務(wù)器端點擊發(fā)送按鈕后啟動發(fā)送線程,啟動發(fā)送線程的函數(shù)為:AfxBeginThread((AFX_THREADPROC)SendDataThread,this,THREAD_PRIORITY_NORMAL);

        當客戶端點擊接收按鈕后啟動接收線程,啟動接收線程的函數(shù)為:AfxBeginThread(ReceiveDataThread,this,THREAD_PRIORITY_NORMAL);

        服務(wù)器與客戶機的通信流程見圖2。

        3.3 磁盤剩余空間判斷

        當客戶端接收文件的時候首先判斷磁盤的剩余空間是否可以滿足文件大小的要求,然后再進行傳輸。獲取磁盤信息的函數(shù)為:GetDiskFreeSpaceEx(str.Left(3),lpuse,lptotal,lpfree);

        其中,str.Left(3)為磁盤的盤符,lpuse為已用空間大小,lptotal為總的空間大小,lpfree為剩余空間大小。最后將lpfree與m_FileLength作比較判斷磁盤空間是否滿足文件存儲的要求。

        4 總結(jié)

        本文通過在VC++6.0上編程實現(xiàn)了可以在整個網(wǎng)絡(luò)傳輸?shù)墓δ?,傳輸文件的大小幾乎沒有限制,服務(wù)器可以隨時暫停和終止文件的傳輸,客戶端在接收文件的時候可以事先判斷磁盤的容量,當磁盤空間不足的時候會出現(xiàn)提示信息。下圖為實際生成的軟件界面。

        [參考文獻]

        [1]莫海光.用VC++實現(xiàn)的文件傳輸工具[J].計算機信息技術(shù),2007年第15期.

        [2]陳堅,陳偉,等.Visual C++網(wǎng)絡(luò)高級編程[M].人民郵電出版社,2001年.

        久久精品蜜桃美女av| 亚洲国产毛片| 久久99久久99精品免观看女同| 在线观看国产自拍视频| 亚洲av午夜精品无码专区| 成人爽a毛片在线视频| 亚洲欧洲国产日产国码无码| 一个人的视频免费播放在线观看 | 亚洲av日韩综合一区在线观看| 久久综合色鬼| 美腿丝袜中文字幕在线观看| 强d乱码中文字幕熟女免费| 国产精品毛片久久久久久久| 无码天堂亚洲国产av麻豆| 亚洲香蕉久久一区二区| 亚洲精品无码永久中文字幕| 日韩插啊免费视频在线观看| 亚洲女同成av人片在线观看 | 亚洲国产精品自拍成人| 天堂а在线中文在线新版| 免费大片黄在线观看| av网站入口在线免费观看| 亚洲一区二区三区综合免费在线| 免费人成视频xvideos入口| 亚洲国产成人无码影院| 日韩精品极品免费在线视频| 琪琪色原网站在线观看| 装睡被陌生人摸出水好爽| 免费人人av看| 国产精品狼人久久影院软件介绍 | 精品一区二区三区人妻久久福利| 亚洲日韩av一区二区三区中文| 麻豆91免费视频| 久久人妻精品中文字幕一区二区| 久久亚洲中文字幕精品一区| 久久精品国产亚洲av麻| 国产精品亚洲美女av网站| 国产av精品一区二区三区久久| 天天弄天天模| 国产成人精品免费视频大全| 午夜免费观看日韩一级片|