jcifs 在android下无法获得工作组信息的原因
2016-03-31 17:19
417 查看
jcifs在java环境下是没有问题的 但在android下 使用new SMBFile("smb://workgroup").listFiles()会超时
原因 jcifs默认端口是445 netbios是139 使用445时 在java环境下会crash,从而被捕捉到进而使用139(推测 没有实测),而在android下会直接超时。
SmbTransport 源码
try {
negotiate( port, resp );
} catch( ConnectException ce ) {
port = (port == 0 || port == DEFAULT_PORT) ? 139 : DEFAULT_PORT;
negotiate( port, resp );
} catch( NoRouteToHostException nr ) {
port = (port == 0 || port == DEFAULT_PORT) ? 139 : DEFAULT_PORT;
negotiate( port, resp );
}
修改后
try {
port = (port == 0 || port == DEFAULT_PORT)?139:port;
negotiate(port, resp);
} catch( ConnectException ce ) {
port = DEFAULT_PORT;
negotiate(port, resp);
} catch( NoRouteToHostException nr ) {
port = DEFAULT_PORT;
negotiate(port, resp);
}
ok 可以用了
原因 jcifs默认端口是445 netbios是139 使用445时 在java环境下会crash,从而被捕捉到进而使用139(推测 没有实测),而在android下会直接超时。
SmbTransport 源码
try {
negotiate( port, resp );
} catch( ConnectException ce ) {
port = (port == 0 || port == DEFAULT_PORT) ? 139 : DEFAULT_PORT;
negotiate( port, resp );
} catch( NoRouteToHostException nr ) {
port = (port == 0 || port == DEFAULT_PORT) ? 139 : DEFAULT_PORT;
negotiate( port, resp );
}
修改后
try {
port = (port == 0 || port == DEFAULT_PORT)?139:port;
negotiate(port, resp);
} catch( ConnectException ce ) {
port = DEFAULT_PORT;
negotiate(port, resp);
} catch( NoRouteToHostException nr ) {
port = DEFAULT_PORT;
negotiate(port, resp);
}
ok 可以用了
相关文章推荐
- Android ServiceConnection的应用
- Android设计模式 单例模式(Double CheckLock模式)
- Android对LinearLayout进行设置View.GONE可是里面的自控件还是会显示
- 通过wifi连接手机adb调试
- android:json解析的两个工具:Gson和Jackson的使用小例子
- android内存泄露总结
- AndroidJNI实践(2)--无需头文件的常规办法-JNI动态注册
- Android系统性能调优工具介绍
- android: open failed: EACCES (Permission denied)
- Android Html交互_二_ JS与App互相调用
- Android Html交互_一_ 网页链接打开App页面
- android CoordinatorLayout使用
- android 解析pdf 方案 使用mupdf
- Android手机对应的CPU型号
- android 2.3 bug android 4.x bug
- Android 进阶之路 自定义View(一)——初步尝试
- Android获取包名、版本号、包名、meta-data
- Android之AlertDialog自定义
- 取消input在ios下,输入的时候英文首字母的默认大写 android 上去掉语音输入按钮
- android-长按Home键,删除历史记录时,service的生命周期