Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Java Jsch ScpTo示例说明_Java_Tcp_Scp_Jsch - Fatal编程技术网

Java Jsch ScpTo示例说明

Java Jsch ScpTo示例说明,java,tcp,scp,jsch,Java,Tcp,Scp,Jsch,我一直在读这本书,但我很难理解他们在做什么。更具体地说,我很难理解checkAck方法是如何工作的 checkAck方法: static int checkAck(InputStream in) throws IOException{ int b=in.read(); // b may be 0 for success, // 1 for error, // 2 for fatal error, //

我一直在读这本书,但我很难理解他们在做什么。更具体地说,我很难理解
checkAck
方法是如何工作的

checkAck
方法:

static int checkAck(InputStream in) throws IOException{
    int b=in.read();
    // b may be 0 for success,
    //          1 for error,
    //          2 for fatal error,
    //          -1
    if(b==0) return b;
    if(b==-1) return b;

    if(b==1 || b==2){
        StringBuffer sb=new StringBuffer();
        int c;
        do {
            c=in.read();
            sb.append((char)c);
        }
        while(c!='\n');
        if(b==1){ // error
            System.out.print(sb.toString());
        }
        if(b==2){ // fatal error
            System.out.print(sb.toString());
        }
    }
    return b;
}
这似乎是在引用TCP协议中的ACK标志。然而,在阅读TCP协议时,TCP头中似乎发送了相当多的内容。然而,当调用该方法时,它不必对所有这些进行排序并提取标志。它只是假设ACK标志将是流中的下一个整数

有人能向我解释一下以下哪一项是适用的吗

  • 为什么这个假设是正确的,
  • 提取国旗的正确方法
  • 在调用方法之前,他们如何确保输入流始终处于正确的标志上,或者
  • 如果这与TCP ACK标志无关,那么它与什么有关

  • java是的一个实现

    标记,即
    checkAck
    方法读取,是来自服务器的SCP协议响应(ack)

    它与TCP无关,TCP是一个协议栈下面的两层,隐藏在远离您的地方,不仅由JSch中的SSH层隐藏,而且主要由Java和OS隐藏

    我认为,不幸的是,没有SCP协议的规范。为了理解协议,您只能参考OpenSSH
    SCP
    code中SCP的规范实现

    很快:对于客户端发送的每个命令,服务器都会用一个字节“ack”进行响应,其中:

    • 0x00
      成功
    • 0x01
      为错误
    • 0x02
      是致命错误

    如果可能的话,我强烈建议您不要使用SCP。使用本机由JSch(和其他SSH实现)支持的SFTP

    谢谢您的说明。不幸的是,我不能使用SFTP。对于我正在处理的项目,SCP显然是唯一允许的文件传输协议。