天天看點

用戶端程式傳送圖檔到伺服器

以前幫朋友做了一個圖檔采集系統,用戶端采集相片後,通過TCP通信傳送到伺服器,本文把用戶端傳送圖檔到伺服器的這部分提取出來。

由于每張圖檔的大小都不大,是以我們在傳輸圖檔時,沒有采用傳送檔案的方式,而是采用了直接序列化圖檔的方式來進行。

目前支援的圖檔類型: jpg,png,gif 您可以自己添加擴充支援的圖檔類型

通信架構采用英國的開源的networkcomms2.3.1 通信架構   序列化器采用開源的protobuf.net

用戶端程式傳送圖檔到伺服器

我們先開看一下實作的效果

伺服器端:

用戶端程式傳送圖檔到伺服器

用戶端:

用戶端程式傳送圖檔到伺服器
用戶端程式傳送圖檔到伺服器

在伺服器端,我們把收到的圖檔儲存在D盤根目錄下(您可以另外指定路徑),打開D盤看到收到的圖檔如下:

用戶端程式傳送圖檔到伺服器

下面看一下具體的過程

第一步,首先進行伺服器端的設定

  (1)監聽端口:

(2) 針對圖檔上傳寫對應的處理方法:

用戶端程式傳送圖檔到伺服器
用戶端程式傳送圖檔到伺服器

第二步:用戶端的設定

(1)連接配接伺服器:

用戶端程式傳送圖檔到伺服器
用戶端程式傳送圖檔到伺服器

(2)從本地選擇圖檔并上傳

用戶端程式傳送圖檔到伺服器
用戶端程式傳送圖檔到伺服器

(三)關于 ImageWrapper類

在用戶端與伺服器端通信的過程中,我們注意到上面的程式中使用了一個ImageWrapper類,用來傳遞圖檔(Image)對象。

 ImageWrapper類,存放在MessageContract類庫中,此類用來序列化圖檔

我們知道Image類并不直接支援序列化,是以我們采用的方式是序列化之前把Image轉化為二級制資料,反序列化之前再把二級制資料轉化為Image類。

我們隻負責定義ImageWrapper類,其他工作通信架構幫我們做好了。

用戶端程式傳送圖檔到伺服器
用戶端程式傳送圖檔到伺服器
用戶端程式傳送圖檔到伺服器
用戶端程式傳送圖檔到伺服器

ImageWrapper

工作到此完成,很少的代碼量,就幫我們實作了傳遞用戶端圖檔儲存在伺服器的功能。

注意:此種方式并不适合傳遞比較大的圖檔,如果圖檔比較大,比如10M以上,最好以傳送檔案的形式,分段發送.

繼續閱讀