Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 文件上传到ftp和sftp_Java_Ftp_Sftp - Fatal编程技术网

Java 文件上传到ftp和sftp

Java 文件上传到ftp和sftp,java,ftp,sftp,Java,Ftp,Sftp,我陷入了困境。根据我的最新要求,我必须上传一个文件到ftp或sftp服务器。问题是我不知道服务器是ftp还是sftp。在运行时客户端将提供ip和服务器的其他细节,我必须上传一个文件。因此,在运行时,我必须了解服务器是ftp或sftp,然后需要相应地采取行动。那么,有什么解决办法吗?ftp和sftp将使用不同的端口(分别为21和22)。这应该是“服务器的ip和其他详细信息”的一部分 默认情况下,SFTP(SSH文件传输协议)使用端口22 有些人用“SFTP”来表示FTP(通过TLS的FTP)。在这

我陷入了困境。根据我的最新要求,我必须上传一个文件到ftp或sftp服务器。问题是我不知道服务器是ftp还是sftp。在运行时客户端将提供ip和服务器的其他细节,我必须上传一个文件。因此,在运行时,我必须了解服务器是ftp或sftp,然后需要相应地采取行动。那么,有什么解决办法吗?

ftp和sftp将使用不同的端口(分别为21和22)。这应该是“服务器的ip和其他详细信息”的一部分

默认情况下,SFTP(SSH文件传输协议)使用端口22

有些人用“SFTP”来表示FTP(通过TLS的FTP)。在这种情况下,您有两个选项:显式TLS和隐式TLS。默认情况下,隐式TLS使用端口990。在显式模式下,客户端默认连接到端口21,然后通知服务器通过现有连接启动TLS握手

普通FTP使用端口21

现在,用户可以明确指定要使用的协议


最后,您可以尝试连接,从套接字中获取第一行数据并对其进行分析。在FTP/FTPS中,第一行应以220SP开头(SP代表空格,字符代码为0x20)。也可以给出其他响应代码。在SSH/SFTP中,该行以“SSH-2.0-”开头

获取ftp和sftp客户端,尝试以任何一种方式连接,然后看看会发生什么?这不是火箭科学。。。如果前门(ftp)已锁定,请返回并尝试sftp。在研究此问题时,请务必确定它是否真的是
sftp
,而不是
ftps
ftp over ssh
。ftp和sftp将使用不同的端口(分别为21和22)。这应该是“服务器的ip和其他详细信息”的一部分。那么,如何从那里获取代码呢?你能给我举个例子吗?@Souvik我不确定我是否理解你的问题。您想从何处获取哪种代码?我的客户端在运行时只会向我提供IP(而不是端口,如果FTP我必须设置为21或22)用户名和密码,但没有关于服务器的信息是FTP或sftp。我必须连接到服务器,并且需要确定服务器是FTP服务器还是SFT服务器。那么,是否有可以用java编写的程序来识别该服务器。@Souvik您必须有用户指定的(端口或协议)。如果没有它们,您将无法知道连接到何处。我的程序将根据服务器确定端口。因此,有没有办法在服务器中识别FTP或SFTP