Java JSch库中SCP协议实现说明
我正在考虑一个JSch库使用的例子,可以在这里找到: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; } ..
我无法理解这个示例中的几个代码模式。这是:
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协议的工作方式。OpenSSHSCP
二进制文件同时作为服务器和客户端工作。因此,当您在本地运行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