您的位置:首页 > 移动开发 > Android开发

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 可以用了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: