年前在做嵌入式组态时,有一个组态下载功能,该功能就是采用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地址即可。