Jsch ScpTo 示例说明
Jsch ScpTo example clarification
我一直在阅读 Jsch ScpTo Example,但我无法理解其中的部分内容。更具体地说,我无法理解 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 header 中发送了相当多的内容。然而,当调用该方法时,它不必对所有这些进行排序并提取标志。它只是假定 ACK 标志将是流中的下一个整数。
谁能给我解释一下以下哪一个是适用的:
- 为什么这个假设是有效的,
- 提取标志的正确方法,
- 他们如何确保在调用方法之前输入流始终位于正确的标志上,或者
- 如果这与 TCP ACK 标志无关,它与什么有关?
ScpTo.java
是 SCP protocol 的实现。
checkAck
方法读取的标志是来自服务器 (ack) 的 SCP 协议响应。
它与 TCP 无关,它在协议栈的下面两层,对你隐藏,不仅通过 JSch 中的 SSH 层,而且主要通过 Java 和 OS.
我认为不幸的是,没有 SCP 协议的规范。您只能参考 OpenSSH scp
代码中 SCP 的规范实现,以了解该协议。
很快:对于客户端发送的每个命令,服务器都以单字节“ack”进行响应,其中:
0x00
成功
0x01
是错误的
0x02
是致命错误
如果可能的话,我强烈建议您不要使用 SCP。使用 JSch(和其他 SSH 实现)原生支持的 SFTP
我一直在阅读 Jsch ScpTo Example,但我无法理解其中的部分内容。更具体地说,我无法理解 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 header 中发送了相当多的内容。然而,当调用该方法时,它不必对所有这些进行排序并提取标志。它只是假定 ACK 标志将是流中的下一个整数。
谁能给我解释一下以下哪一个是适用的:
- 为什么这个假设是有效的,
- 提取标志的正确方法,
- 他们如何确保在调用方法之前输入流始终位于正确的标志上,或者
- 如果这与 TCP ACK 标志无关,它与什么有关?
ScpTo.java
是 SCP protocol 的实现。
checkAck
方法读取的标志是来自服务器 (ack) 的 SCP 协议响应。
它与 TCP 无关,它在协议栈的下面两层,对你隐藏,不仅通过 JSch 中的 SSH 层,而且主要通过 Java 和 OS.
我认为不幸的是,没有 SCP 协议的规范。您只能参考 OpenSSH scp
代码中 SCP 的规范实现,以了解该协议。
很快:对于客户端发送的每个命令,服务器都以单字节“ack”进行响应,其中:
0x00
成功0x01
是错误的0x02
是致命错误
如果可能的话,我强烈建议您不要使用 SCP。使用 JSch(和其他 SSH 实现)原生支持的 SFTP