Java JSch SCP文件传输使用;执行官;频道

Java JSch SCP文件传输使用;执行官;频道,java,android,scp,jsch,Java,Android,Scp,Jsch,我对SCP协议和JSch非常陌生。我必须通过SCP将文件从远程设备传输到Android。服务器端开发人员拒绝透露关于他们设备的任何信息,除了文件位置和可以使用SCP访问它的根帐户 以下是我尝试的步骤 确认使用JSch,我的Android客户端可以与服务器建立连接。[完整] 确认使用JSch和ChannelExec对象,我可以发送ls命令并读取其输出。[完整] 确认使用JSch和ChannelSFTP对象,我可以从设备传输文件。[失败] (3)失败的原因似乎是设备(服务器)未配置为SFTP。mak

我对SCP协议和JSch非常陌生。我必须通过SCP将文件从远程设备传输到Android。服务器端开发人员拒绝透露关于他们设备的任何信息,除了文件位置和可以使用SCP访问它的根帐户

以下是我尝试的步骤

  • 确认使用JSch,我的Android客户端可以与服务器建立连接。[完整]

  • 确认使用JSch和
    ChannelExec
    对象,我可以发送
    ls
    命令并读取其输出。[完整]

  • 确认使用JSch和
    ChannelSFTP
    对象,我可以从设备传输文件。[失败]

  • (3)失败的原因似乎是设备(服务器)未配置为SFTP。maker一直说ssh上的命令如下:

    scproot@192.168.5.1/usr/WS026.jpeg[targetPath]
    

    他们说上面的命令将把第一个参数复制到客户端的目标路径。因此,除了使用SFTP,我如何在JSch通道“exec”中实现这一点?

    如果设备仅支持SCP,请不要尝试使用SFTP,而是使用SCP

    有一个使用JSch实现SCP下载的官方示例:


    不要被示例代码中调用的
    scp
    弄糊涂。这就是SCP协议的工作原理。本地(OpenSSH)
    scp
    在远程服务器上执行
    scp
    (使用特定的非公共参数,在本例中为
    -f
    ),然后两个实例相互对话。该示例实现了本地
    scp
    。用于远程
    scp
    的参数不是用于本地
    scp
    的参数


    另请参见。

    我浏览了该教程,并实际尝试了它,但它甚至没有循环。如何将commad设置为上述命令的等效值?它是什么意思“它甚至没有循环”?你提供了什么信息?您在
    文件中使用了什么?该示例完全等同于您问题中的命令(即,
    scp
    命令在内部执行的操作)。确定。让我直说吧。我使用的命令是“scp”root@192.168.5.1:/usr/WS001.jpeg”。它在第一个checkAck函数中得到-1,最终完成了任务。I'v将lfile设置为“getCacheDir+”WS001.jpeg“。我做错了什么?但这不是这个例子所做的。”。该示例采用了自己的第一个局部参数,其形式为
    user@host:rfile
    ,解析该文件,并调用远程
    scp-f rfile
    。按照示例所示去做!将服务器的IP地址传递到远程
    scp
    有什么意义?您已经连接到该IP!我在回答中添加了一些额外的信息。你给我的链接很有效。我在第一次访问scp时发现了这个链接,但我认为它没用,因为它似乎不起作用。经过两天的努力,我发现设备出现了故障。在大多数情况下,它一直无法创建本应创建的文件。我还发现了一个更简单的库,名为sshj。在接受您的回答时,我将添加一个关于它的附加答案。