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标志将是流中的下一个整数
有人能向我解释一下以下哪一项是适用的吗
java是的一个实现 标记,即
checkAck
方法读取,是来自服务器的SCP协议响应(ack)
它与TCP无关,TCP是一个协议栈下面的两层,隐藏在远离您的地方,不仅由JSch中的SSH层隐藏,而且主要由Java和OS隐藏
我认为,不幸的是,没有SCP协议的规范。为了理解协议,您只能参考OpenSSHSCP
code中SCP的规范实现
很快:对于客户端发送的每个命令,服务器都会用一个字节“ack”进行响应,其中:
成功0x00
为错误0x01
是致命错误0x02
如果可能的话,我强烈建议您不要使用SCP。使用本机由JSch(和其他SSH实现)支持的SFTP谢谢您的说明。不幸的是,我不能使用SFTP。对于我正在处理的项目,SCP显然是唯一允许的文件传输协议。