天天看點

可視化檔案消息收發一體化Socket實作V0.1

1、概述

本設計旨在通過socket的TCP實作不同類型檔案的收發,UDP實作消息的收發。

1.1 需求概述

基本需求:

1)  支援發送不同類型的檔案(.txt,.doc,.jpg,.exe,.mp3等所有類型)

2)  支援發送字元消息。

3)  支援可視化、直覺顯示與操作。

4)  支援單機收發、區域網路内兩台機器收發。

1.2開發環境

程式設計語言:C++語言

開發及運作環境:Window作業系統、內建開發環境VS2008。

2、界面設計

圖2.1伺服器端界面

圖2.2用戶端界面

3、總體設計

總體設計需要參照設計要求去設計。

針對要求一:支援發送不同類型的檔案(.txt,.doc,.jpg,.exe,.mp3等所有類型)。

Socket實作通信自不必說,而檔案的傳輸歸根結底是檔案的讀、寫。檔案的讀寫涉及到檔案的屬性:檔案的名稱(含擴充名,所在路徑名)、檔案大小、檔案内容資訊。

核心有三點:

(1)讀取檔案的前提是知道檔案的路徑。檔案的名稱+檔案所在的路徑即為檔案的絕對路徑。而存儲檔案的時候也需要同發送檔案名字相同存儲,亦需要知道接收檔案的路徑。

(2)發送、接收的過程都要涉及讀取、接收累計位元組的多少和檔案大小比較,這也是驗證檔案是否讀取完畢或者接收完畢的方法。

(3)檔案内容資訊,即整個檔案長度的位元組數,可以循環讀檔案到buffer、寫檔案到buffer,最後寫入磁盤路徑來完成寫入。

檔案的傳輸考慮到可靠傳輸,可以通過TCP套接字來實作。

針對要求二:支援發送字元消息。

發送字元消息,可以采取一端等待接收、一端發送消息的UDP套接字來實作。

針對要求三:支援可視化、直覺顯示與操作。

考慮到能直覺顯示指定發送源檔案夾sourcefile,接收目标檔案夾destfile裡的内容。我們考慮采用listCtrl清單框通過圖示+檔案名稱+擴充名的形式顯示檔案。且可以關聯單擊添加、左輕按兩下打開、右輕按兩下删除的操作。

考慮到對接收到檔案的直覺顯示,對于圖檔的顯示,我們借鑒設計了緩存模式和存盤模式。緩存模式将接收到的檔案顯示在我們設定的區域。而對于硬碟模式,檔案存儲在對應磁盤的destfile檔案夾下,同時在接收端的listctrl清單框會有對應圖示顯示。僅圖檔可以緩存模式顯示,所有類型的檔案都可以通過硬碟模式存儲和直覺顯示。

針對要求四:支援單擊收發、兩台機器收發。

考慮到支援不同機器收發,我們設計了可配置的IP位址和端口号的模式。友善操作和實作。

4、伺服器端的核心設計流程

5、用戶端的核心設計流程

可視化檔案消息收發一體化Socket實作V0.1

6、檔案收發操作示例

步驟一:

可視化檔案消息收發一體化Socket實作V0.1

圖6.1伺服器端配置完畢後

如圖6.1所示,勾選伺服器配置複選對話框,無需更改配置,單擊配置完畢、單擊啟動服務,完成等待連接配接。此時選擇的是緩存模式。

步驟二:

可視化檔案消息收發一體化Socket實作V0.1

圖6.2用戶端選中待發送檔案,點選接受按鈕

如圖6.2所示,點選檔案發送list清單框,選擇待發送的檔案123.jpg。單擊接受按鈕,以等待接受UDP消息。已選框可以有多個不同類型的檔案,但發送的時候,一次隻能發送一個檔案,以最後選擇的檔案為準。

步驟三:

可視化檔案消息收發一體化Socket實作V0.1

圖6.3用戶端單擊連接配接請求、發送按鈕後

如圖6.3所示,點選連接配接請求、發送按鈕後,用戶端顯示檔案發送滾動條完畢,發送狀态欄記錄了發送狀态及發送的位元組數。

伺服器端接受發送檔案後的界面如圖6.4所示。

可視化檔案消息收發一體化Socket實作V0.1

圖6.4伺服器端緩存接收發送檔案後

如圖6.4所示,伺服器端緩存接收檔案會在右側顯示,左側Socket狀态欄會顯示接收狀态。

同步驟1à步驟3,若改為硬碟模式接收。硬碟模式步驟3截圖如下圖6.5、圖6.6:

可視化檔案消息收發一體化Socket實作V0.1

圖6.5用戶端單擊連接配接請求、發送按鈕後,發送sangfor.txt

可視化檔案消息收發一體化Socket實作V0.1

圖6.6伺服器端硬碟模式接收,并輕按兩下Sangfor.txt打開後截圖。

如圖6.7,伺服器端寫入消息并單擊發送按鈕後,用戶端能接收消息并顯示。

可視化檔案消息收發一體化Socket實作V0.1

圖6.7用戶端接收伺服器端消息後顯示

7、待擴充、完善功能

(1)用戶端現在一次僅能發送一個檔案,可擴充至一次發送多個檔案。

(2)目前的連接配接、發送、接收,一次發送、一次接收完畢套接字即關閉,可擴充至建立連接配接後可持續發送。

可視化檔案消息一體化收發Socket實作V0.1 說明文檔

下載下傳位址:

http://download.csdn.net/detail/wojiushiwo987/5149658

可視化檔案消息一體化收發Socket實作V0.1 源碼  

http://download.csdn.net/detail/wojiushiwo987/5149657

作者:銘毅天下

原文:

https://blog.csdn.net/laoyang360/article/details/8681918