年前在做嵌入式組态時,有一個組态下載下傳功能,該功能就是采用FTP上傳功能把組态配置檔案上傳到觸摸屏(WinCE4.2平台,已開FTP伺服器)中的。所用到的指令就是WebClient類的UploadFile(該類是精簡架構集2.0新加功能),使用發現,下載下傳檔案需要延遲大約15秒才開始下載下傳。其實下載下傳過程挺快,就是下載下傳前有延遲。
由于UploadFile僅一條指令就完成下載下傳,是以無法分析相關延遲的原因。這次研究FTP Server/Client終于把相關原因給搞清楚了,UploadFile程式為了通用(即可以支援IP位址方式,也支援域名解析), 也就是需要執行Dns.GetHostEntry(server).AddressList指令,該指令在windows系統,沒有任何問題,執行正常,但是如果FTP伺服器在嵌入式平台(Wince),問題就來了,該指令執行巨慢,延遲的罪魁禍首就是它(其實應該是Wince平台不争氣)。
該問題如何解決?我想如果用WebClient類好像沒有什麼好辦法,我的解決方案是,自己編寫FTP客戶段,問題就迎刃而解,不需要Dns解析,直接傳遞IP位址即可。