Java JSch库中SCP协议实现说明

Java JSch库中SCP协议实现说明,java,ssh,sftp,scp,jsch,Java,Ssh,Sftp,Scp,Jsch,我正在考虑一个JSch库使用的例子,可以在这里找到: 我无法理解这个示例中的几个代码模式。这是: 是否有任何理由选择SCP而不是SFTP,因为SFTP可以使用相同的库运行 为什么我们在远程主机上运行scp-f,而不是简单地运行scp-source\u-file\u-path-destination\u-file\u-path?为什么在远程主机上执行更好 在换乘的开始有一条线 while(true){ int c=checkAck(in); if(c!='C'){ break; } ..

我正在考虑一个JSch库使用的例子,可以在这里找到:

我无法理解这个示例中的几个代码模式。这是:

  • 是否有任何理由选择SCP而不是SFTP,因为SFTP可以使用相同的库运行

  • 为什么我们在远程主机上运行
    scp-f
    ,而不是简单地运行
    scp-source\u-file\u-path-destination\u-file\u-path
    ?为什么在远程主机上执行更好

  • 在换乘的开始有一条线

    while(true){
    int c=checkAck(in);
    if(c!='C'){
        break;
    }
    ...
    
    这个神奇的
    C
    字母是什么意思?为什么
    C

  • 为什么要一直发送这个信号

    // send '\0'
    buf[0]=0; out.write(buf, 0, 1); out.flush();
    
  • 如何读取文件大小

    long filesize=0L;
    while(true){
        if(in.read(buf, 0, 1)<0){
            // error
            break; 
        }
        if(buf[0]==' ')break;
        filesize=filesize*10L+(long)(buf[0]-'0'); //What is this??
    }
    
    long filesize=0L;
    while(true){
    if(in.read(buf,0,1)
    
  • 是否有任何理由选择SCP而不是SFTP,因为SFTP可以使用相同的库运行
  • 不,SCP协议已经过时。您现在应该始终使用SFTP

    尽管SFTP协议的普通实现往往比SCP传输速度慢(由于其数据包性质,要有效地实现SFTP传输并不容易)

  • 为什么我们在远程主机上运行
    scp-f
    ,而不是简单地运行
    scp-source\u-file\u-path destination\u-file\u-path
    ?为什么在远程主机上执行更好
  • 这就是SCP协议的工作方式。OpenSSH
    SCP
    二进制文件同时作为服务器和客户端工作。因此,当您在本地运行
    SCP
    时,它通过SSH连接并在服务器上运行
    SCP
    。然后这两个实例相互通信。JSch替换
    SCP
    的本地实例。但它仍然需要rem使用实例来完成传输

    如果您在本地运行
    scp
    ,则必须在计算机上安装OpenSSH。这在Unix上可能很常见,但在Windows上肯定不常见。此外,也没有简单/标准化的方法从
    scp
    程序捕获结果,将其转换为JSch Java接口。这与JSch的原因相同(或任何其他SFTP库)自行实现SFTP协议,而不是使用
    SFTP
    程序

  • 这个神奇的C字母是什么意思?为什么是C
  • SCP协议的每个命令都由一个字符标识。
    C
    代表“文件传输”;
    D
    代表“目录传输”;
    T
    在文件传输之前表示下一个传输文件的修改时间,等等。我不知道为什么它是
    C
    ,而不是例如
    F

  • 为什么要一直发送这个信号
  • NULL(
    \0
    )字符命令是对其他站点的确认/响应,表明接收到的命令已完成

  • 如何读取文件大小
  • C
    命令具有语法(它是人类可读的字符串):

    例如:

    C 0644 153634 index.php
    
    代码中的循环将字符串
    “153634”
    转换为数字153634。它看起来有点太复杂了,但它可以工作


    另请参见

    。相关内容:
    C 0644 153634 index.php