Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过SMB协议进行文件传输android错误_Android_Jcifs - Fatal编程技术网

通过SMB协议进行文件传输android错误

通过SMB协议进行文件传输android错误,android,jcifs,Android,Jcifs,我想将文件从我的应用程序传输到无线samba设备。我编写了以下代码,但不起作用。设备的ip=192.168.1.2:8181,用户名=Admin,密码=[empty]。当我尝试从pc浏览器访问该设备时,该设备会显示完整的文件 import android.os.Bundle; import android.os.Environment; import android.support.v7.app.ActionBarActivity; import android.util.Log; import

我想将文件从我的应用程序传输到无线samba设备。我编写了以下代码,但不起作用。设备的ip=192.168.1.2:8181,用户名=Admin,密码=[empty]。当我尝试从pc浏览器访问该设备时,该设备会显示完整的文件

import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import java.io.File;
import java.io.FileOutputStream;
import java.net.MalformedURLException;

import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;


public class Samba extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_samba);



        Thread t = new Thread(new Runnable() {
            public void run() {
        /*
         * Do something
         */

                try {
                    String yourPeerPassword = "";
                    String yourPeerName = "Admin";
                    String yourPeerIP = "192.168.1.2:8181";

                    String smfilepath = "smb://" + yourPeerIP + "//dummy.txt.txt";

                    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(
                            null, yourPeerName, yourPeerPassword);

                    Log.e("Connected", "Yes");
                    SmbFile smbFile = new SmbFile(smfilepath, auth);
                    /** Printing Information about SMB file which belong to your Peer **/
                    String nameoffile = smbFile.getName();
                    String pathoffile = smbFile.getPath();
                    Log.e(nameoffile, pathoffile);
                    Log.e("Path", "Yes");

                    SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile);
                    smbfos.write("testing....and writing to a file".getBytes());
                    smbfos.close();
/*
                    SmbFile Dest=new SmbFile(smfilepath,auth);

                    Log.e("file", "dest");
                    downloadFileFromPeerToSdcard(Dest);
                    Log.e("after fun", "Yes");*/
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                    Log.e("MalformURL", e.getMessage());
                } catch (SmbException e) {
                    e.printStackTrace();
                    Log.e("SMBException", e.getMessage());
                }catch (Exception e) {
                    e.printStackTrace();
                    Log.e("Not Connected", e.getMessage());
                }
            }
        });

        t.start();



    }
}
日志错误:

10-05 09:47:41.220    6332-7651/loginscreen.example.com.girviapp E/Connected﹕ Yes
10-05 09:47:41.220    6332-7651/loginscreen.example.com.girviapp E/dummy.txt.txt﹕ smb://192.168.1.2:8181//dummy.txt.txt
10-05 09:47:41.220    6332-7651/loginscreen.example.com.girviapp E/Path﹕ Yes
10-05 09:47:49.897    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ jcifs.smb.SmbException: Failed to connect: 0.0.0.0<00>/192.168.1.2
10-05 09:47:49.897    6332-7545/loginscreen.example.com.girviapp W/art﹕ Long monitor contention event with owner method=void jcifs.smb.SmbTree.treeConnect(jcifs.smb.ServerMessageBlock, jcifs.smb.ServerMessageBlock) from SmbTree.java:136 waiters=0 for 22.506s
10-05 09:47:49.897    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ jcifs.util.transport.TransportException: Connection timeout
10-05 09:47:49.897    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.util.transport.Transport.connect(Transport.java:174)
10-05 09:47:49.897    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.smb.SmbTransport.connect(SmbTransport.java:307)
10-05 09:47:49.897    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.smb.SmbTree.treeConnect(SmbTree.java:156)
10-05 09:47:49.898    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.smb.SmbFile.doConnect(SmbFile.java:911)
10-05 09:47:49.898    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.smb.SmbFile.connect(SmbFile.java:957)
10-05 09:47:49.898    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.smb.SmbFile.connect0(SmbFile.java:880)
10-05 09:47:49.898    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.smb.SmbFile.open0(SmbFile.java:975)
10-05 09:47:49.898    6332-7490/loginscreen.example.com.girviapp W/System.err﹕ at jcifs.smb.SmbFile.open(SmbFile.java:1009)
10-05 09:47:41.220 6332-7651/loginscreen.example.com.girviapp E/Connected﹕ 对
10-05 09:47:41.220 6332-7651/loginscreen.example.com.girviapp E/dummy.txt.txt﹕ smb://192.168.1.2:8181//dummy.txt.txt
10-05 09:47:41.220 6332-7651/loginscreen.example.com.girviapp E/Path﹕ 对
10-05 09:47:49.897 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ jcifs.smb.SmbException:连接失败:0.0.0.0/192.168.1.2
10-05 09:47:49.897 6332-7545/loginscreen.example.com.girviapp W/art﹕ 来自SmbTree.java的所有者方法为void jcifs.smb.SmbTree.treeConnect(jcifs.smb.ServerMessageBlock,jcifs.smb.ServerMessageBlock)的长监视器争用事件:136 waiters=0,持续22.506s
10-05 09:47:49.897 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ jcifs.util.transport.TransportException:连接超时
10-05 09:47:49.897 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 在jcifs.util.transport.transport.connect(transport.java:174)
10-05 09:47:49.897 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 位于jcifs.smb.SmbTransport.connect(SmbTransport.java:307)
10-05 09:47:49.897 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 位于jcifs.smb.SmbTree.treeConnect(SmbTree.java:156)
10-05 09:47:49.898 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 位于jcifs.smb.SmbFile.doConnect(SmbFile.java:911)
10-05 09:47:49.898 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 位于jcifs.smb.SmbFile.connect(SmbFile.java:957)
10-05 09:47:49.898 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 位于jcifs.smb.SmbFile.connect0(SmbFile.java:880)
10-05 09:47:49.898 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 在jcifs.smb.SmbFile.open0(SmbFile.java:975)
10-05 09:47:49.898 6332-7490/loginscreen.example.com.girviapp W/System.err﹕ 位于jcifs.smb.SmbFile.open(SmbFile.java:1009)

您应该安装一个日志收集器应用程序,以查明是否生成了任何错误

可能会有帮助

之后,您可以在错误日志中找到可能的原因。 如果无法写入该文件,则至少应引发IOException


此外,仔细检查您是否没有共享文件夹名称(即,您确实希望写入SMB设备上未命名的根文件夹)也会很有帮助,如果是这样,请从SMB url中删除端口后的两个斜杠之一(共享名称应放在这两个斜杠之间)可能会有帮助。

您面对的确切症状是什么而不是“不工作”?在我检查设备时,设备上的文件内容未更新以前有人有过相同的问题吗