前一段時間,因為工作需要,使用silverlight在客戶端使用socket與伺服器進行長時間連線,並及時更新頁面顯示伺服器資料,因此對於sl的socket有一定接觸,受到諸如伺服器943安全策略,可使用埠範圍4502-4530約束,不過最終克服困難,完成需要。
受到此次經驗啟發,即然sl可以使用socket,那是否可以使用sl在客戶端做ftp上傳?
當然,所有的疑問,第一時間內,google一下,關鍵字使用 silverlight ftp client,發現可用內容少之又少,乙個英文部落格中,隱約寫到,可以使用socket,自己處理ftp的通訊協議,同時需要ftp服務端更改埠,以適應sl,但並沒有給出任何demo或源**之類的東西,後搜尋數日,未果,遂,想自己實現一下。
思路很簡單,更多的是對於程式的嘗試。
1,修改ftp服務埠(4530)
2,伺服器執行sl需要的策略應答服務
3,sl使用socket連線該埠,傳送和響應各類ftp命令,以進行ftp命令操作
4,對於ftp資料傳輸,常用的「主動」,「被動」模式,查閱相關文件後,「被動」模式更常用,於是,需要修改ftp服務,在被動模式下的資料埠範圍。(本例中直接固定應答埠為4502,下以filezillaserver為測試物件,有較詳細的訊息記錄,便於學習ftp各類訊息命令)
附圖:1,執行效果
2,943策略應答服務
3,ftp配置
注意事項:
1,傳送ftp命令,諸如 "user admin" ,需要新增 "\r\n"至未尾,否則服器不返回訊息。最開始浪費n多精力追查原因
2,檔案上傳時,連線伺服器資料埠(本例中:4502),時間不能與sort命令(上傳通知)間隔時間太長,謹防伺服器拒絕
3,通過資料埠寫入位元組流時,為都是非同步操作,在執行迴圈傳送資料時,第二次傳送操作需等待第乙個傳送操作完成後,才能繼續,不然會返回「當前正在傳送資料」之類的異常
4,檔案資料傳送完畢,需要關閉資料埠,關閉時,請使用socket.close(1000)方法,否則,立即斷掉連線,上傳檔案會失敗
其它:1,學習用例,僅實現了連線ftp伺服器,檔案上傳功能。
2,目錄羅列通訊模組完成,需要對字元進行處理,因為工作原因,未能完成在介面上。
Silverlight支援Ftp上傳
前一段時間,因為工作需要,使用silverlight在客戶端使用socket與伺服器進行長時間連線,並及時更新頁面顯示伺服器資料,因此對於sl的socket有一定接觸,受到諸如伺服器943安全策略,可使用埠範圍4502 4530約束,不過最終克服困難,完成需要。受到此次經驗啟發,即然sl可以使用so...
Silverlight如何支援多語言
利用資源檔案 resources file 使silverlight支援多語言。1.建立乙個silverlight應用程式,multilanguagedemo。3.新增string型別的資源,這裡新增 usernamestring user name。設定access modeifer為public...
虛擬主機不支援silverlight
虛擬主機不支援silverlight 再三說明這個功能很簡單,而且發做法過去給他們 ilverlight對伺服器沒有要求,所有常用的web伺服器都可以發布silverlight。若需要iis伺服器支援silverlight需要配置對xaml檔案的支援。方法如下 在iis站點的屬性頁,開啟主機頭標籤,...