「javaftp损坏」javaftp服务器

博主:adminadmin 2022-12-10 04:21:08 74

本篇文章给大家谈谈javaftp损坏,以及javaftp服务器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA编写FTP连接报错java.net.ConnectException: Connection refused: connect FTP

你用的FTPClient引入不对吧,我们项目上都是用的

import org.apache.commons.net.;

import org.apache.commons.net.;

import org.apache.commons.net.;

下面是我们项目上用到的FTP的实现代码(FTP需要先连接,再登录,之后就是校验登录是否成功),具体代码如下:

/**

  * 获取FTPClient对象

  *

  * @param ftpHost FTP主机服务器

  * @param ftpPassword FTP 登录密码

  * @param ftpUserName FTP登录用户名

  * @param ftpPort FTP端口 默认为21

  * @return FTPClient

  * @throws Exception

  */

 public static FTPClient getFTPClient(String ftpHost, String ftpUserName,

   String ftpPassword, int ftpPort) throws Exception {

  try {

   FTPClient ftpClient = new FTPClient();

   ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器

   ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器

   if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {

    logger.error("未连接到FTP,用户名或密码错误!");

    ftpClient.disconnect();

    return null;

   } else {

    logger.info("FTP连接成功!");

    return ftpClient;

   }

  } catch (SocketException socketException) {

   logger.error("FTP的IP地址可能错误,请正确配置!");

   throw socketException;

  } catch (IOException ioException) {

   logger.error("FTP的端口错误,请正确配置!");

   throw ioException;

  }

 }

关于JAVA FTP 客户端程序异常

501 PORT not allowed after EPSV ALL~~~说明还是网络的问题,我对网络不熟~~~比如用ftp工具的时候,有些ftp站点必须采用被动模式才能连接。下面的你看看吧,或许有用,找网管看看应该使用哪种方式访问

***************************************************

3. EPSV命令

EPSV请求服务器在一个数据端口上侦听等待连接,它可以带参数。对它的响应是TCP端口号。响应的格式与EPRT参数的很象。这对实现上有很大的方便。而且响应还留下了网络协议和/或网络地址的空位,可以供以后使用。使用扩展地址进行被动模式的响应码必须是229,对它的解释如下:

2yz 主动完成

x2z 连接

xy9 进行扩展的被动模式

响应的格式如下:

指示服务器已经进入初扩展的被动模式

(dddTCP端口d)

包括在括号内的字符串必须是EPRT打开数据连接的端口。具体如上所未,这里就不多说了。数据连接使用的协议必须和控制连接使用的协议和地址一致,下面是响应的一个例子:

Entering Extended Passive Mode (|||6446|)

标准错误代码500和501对EPSV已经足够了。在EPSV命令没有使用参数时,服务器会基于控制连接所使用的协议选择数据连接使用的网络协议。但是在有代理的情况下,这种机制可能不合适。因此客户也需要能够要求一个指定协议。如果服务器返回说明它在指定端口不支持此协议,客户必须发送ABOR(放弃)命令使服务器关闭连接,然后客户再使用EPSV命令要求使用特定的网络协议,具体格式如下:

EPSV空格网络协议

如果请求的网络协议是服务器支持的,那就必须使用此协议;如果不支持,则返回522。最后,EPSV命令可以使用参数"ALL"通过网络地址翻译器,EPRT命令不再使用。下面是例子:

EPSV空格ALL

接收到此命令后,服务器要拒绝除了EPSV以外所有建立连接的命令。在下一节我们将详细说明此命令的功能。

**********************************************************************

java ftp上传时断网,文件损坏

以二进制流上传,然后实现断点续传。

/**

* 上传文件到FTP服务器,支持断点续传

* @param local 本地文件名称,绝对路径

* @param remote 远程文件路径,使用/home/directory1/subdirectory/file.ext 按照Linux上的路径指定方式,支持多级目录嵌套,支持递归创建不存在的目录结构

* @return 上传结果

* @throws IOException

*/

public UploadStatus upload(String local,String remote) throws IOException{

FTPClient ftpClient = new FTPClient();

//设置PassiveMode传输

ftpClient.enterLocalPassiveMode();

//设置以二进制流的方式传输

ftpClient.setFileType();

UploadStatus result;

//对远程目录的处理

String remoteFileName = remote;

if(remote.contains("/")){

remoteFileName = remote.substring(remote.lastIndexOf("/")+1);

String directory = remote.substring(0,remote.lastIndexOf("/")+1);

if(!directory.equalsIgnoreCase("/")!ftpClient.changeWorkingDirectory(directory)){

//如果远程目录不存在,则递归创建远程服务器目录

int start=0;

int end = 0;

if(directory.startsWith("/")){

start = 1;

}else{

start = 0;

}

end = directory.indexOf("/",start);

while(true){

String subDirectory = remote.substring(start,end);

if(!ftpClient.changeWorkingDirectory(subDirectory)){

if(ftpClient.makeDirectory(subDirectory)){

ftpClient.changeWorkingDirectory(subDirectory);

}else {

System.out.println("创建目录失败");

return UploadStatus.Create_Directory_Fail;

}

}

start = end + 1;

end = directory.indexOf("/",start);

//检查所有目录是否创建完毕

if(end = start){

break;

}

}

}

}

//检查远程是否存在文件

FTPFile[] files = ftpClient.listFiles(remoteFileName);

if(files.length == 1){

long remoteSize = files[0].getSize();

File f = new File(local);

long localSize = f.length();

if(remoteSize==localSize){

return UploadStatus.File_Exits;

}else if(remoteSize localSize){

return UploadStatus.Remote_Bigger_Local;

}

//尝试移动文件内读取指针,实现断点续传

InputStream is = new FileInputStream(f);

if(is.skip(remoteSize)==remoteSize){

ftpClient.setRestartOffset(remoteSize);

if(ftpClient.storeFile(remote, is)){

return UploadStatus.Upload_From_Break_Success;

}

}

//如果断点续传没有成功,则删除服务器上文件,重新上传

if(!ftpClient.deleteFile(remoteFileName)){

return UploadStatus.Delete_Remote_Faild;

}

is = new FileInputStream(f);

if(ftpClient.storeFile(remote, is)){

result = UploadStatus.Upload_New_File_Success;

}else{

result = UploadStatus.Upload_New_File_Failed;

}

is.close();

}else {

InputStream is = new FileInputStream(local);

if(ftpClient.storeFile(remoteFileName, is)){

result = UploadStatus.Upload_New_File_Success;

}else{

result = UploadStatus.Upload_New_File_Failed;

}

is.close();

}

return result;

}

java FTPClient下载的文件打不开

仔细检查一下你的程序看看是不是编码错误,或者是漏掉了字节。原因有很多。

java写的ftp软件无法连接主机,抛出异常,怎么解决啊?

现在cmd窗口中用命令 ftp ip地址 输入用户名和密码 看看能否正常登陆 是否正常

javaftp损坏的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javaftp服务器、javaftp损坏的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-10,除非注明,否则均为首码项目网原创文章,转载请注明出处。