6

jCIFSは、Android上のSMB共有に接続するための優れたライブラリであり、私がテストしたほとんどすべてのセットアップでうまく機能します。

SmbFile.listFiles()ただし、 Windowsベースのネットワーク共有でこの方法を使用すると、PCで実際のユーザーとしてログインした場合にのみ、パフォーマンスが大幅に低下します。フォルダのリストを取得するのに最大で数分かかる場合があり、まったく何も起こらない場合もあります。

ゲストとしてログインすることを選択した場合(ユーザーとして「guest」を使用し、パスワードを空のままにしておく)、すべてが高速です。通常は1秒未満です。

次のコードは機能し、高速です。

try {
   NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("", "guest", ""); // domain, user, password
   currentFolder = new SmbFile("smb://host-name-for-my-pc", authentication);
   SmbFile[] listFiles = currentFolder.listFiles();
} catch (Exception e) { // Using Exception for the sake of demonstration...

ただし、このコードは機能しません/非常に遅いです:

try {
   NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("", "my-username", "my-password"); // domain, user, password
   currentFolder = new SmbFile("smb://host-name-for-my-pc", authentication);
   SmbFile[] listFiles = currentFolder.listFiles();
} catch (Exception e) { // Using Exception for the sake of demonstration...

jCIFSを使用している別の人と話をしましたが、彼は同じ問題を経験しています。

jCIFSも利用しているESFileExplorerを使用して同じ共有に接続しようとしましたが、実際のアカウントを使用したり、ゲストとしてログインしたりしても高速です。

アップデート:

SmbFile("username:password@server/")代わりに使用すると、機能します。でも、本当にうまくいきたいNtlmPasswordAuthenticationです。何か案は?

4

4 に答える 4

6

作品を使用new SmbFile("username:password@server/")するので、私はそれを使用しています。

于 2013-02-11T17:09:51.763 に答える
2

jCIFS クラスがインスタンス化される前に、以下のコードを使用してみてください。

jcifs.Config.setProperty("resolveOrder", "DNS");

JCIFS での Glenn の回答 のおかげで、ファイルの取得が遅すぎて使用できません

参照: https://jcifs.samba.org/src/docs/api/overview-summary.html

于 2015-09-16T06:56:49.500 に答える
1

を使用してみてくださいnew SmbFile("smb://host-name-for-my-pc/", authentication);。最後にスラッシュが付いています。

于 2013-02-17T19:01:31.930 に答える