尽管这些天的研究得出一个结论,SMB协议不支持多线程,如果强行多线程,则效率反而很低。
即使使用多线程,每个进程只打开一个端口。
可以使用多进程。每个进程一个端口。速度明显快。
JAVA可以使用jcifs-1.3.14或jcifs-1.2.25库实现SMB传输。我试了一下,1.2.25可用,1.3.14不可用。
可使用两种方式下载:
JDK自带的URL:
URL url = new URL("file:\\\\10.82.20.89/szx01/CRDU_RTOOLS_F/RD_Tools/Software_Dvlp/Code_Edit-Dvlp/vs.net 2005 Professional(cn)/cs_vs_2005_pro_dvd.iso");
或jcifs-1.2.25库:
String url="smb://username:password@10.78.182.65/otmshare2/cygwin/CygwinPortable-0.2.7z";
不过第一种明显快一些(也许只有验证用户名密码那部分快一些),但是jcifs-1.2.25库可以实现多进程下载。
支持SmbFile、SmbRandomAccessFile这些类。