java 什么是ftp协议 Java的ftp操作方法有哪几种
大家好,今天来为大家解答java 什么是ftp协议这个问题的一些问题点,包括Java的ftp操作方法有哪几种也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
Java的ftp操作方法有哪几种
FTP(File Transfer Protocol)是 Internet上用来传送文件的协议(文件传输协议)。它是为了我们能够在 Internet上互相传送文件而制定的的文件传送标准,规定了 Internet上文件如何传送。也就是说,通过 FTP协议,我们就可以跟 Internet上的 FTP服务器进行文件的上传(Upload)或下载(Download)等动作。
和其他 Internet应用一样,FTP也是依赖于客户程序/服务器关系的概念。在 Internet上有一些网站,它们依照 FTP协议提供服务,让网友们进行文件的存取,这些网站就是 FTP服务器。网上的用户要连上 FTP服务器,就要用到 FPT的客户端软件,通常 Windows都有“ftp”命令,这实际就是一个命令行的 FTP客户程序,另外常用的 FTP客户程序还有 CuteFTP、Ws_FTP、FTP Explorer等。
要连上 FTP服务器(即“登陆”),必须要有该 FTP服务器的帐号。如果是该服务器主机的注册客户,你将会有一个 FTP登陆帐号和密码,就凭这个帐号密码连上该服务器。但 Internet上有很大一部分 FTP服务器被称为“匿名”(Anonymous)FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,因此,不要求用户事先在该服务器进行登记注册。
Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”和“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名FTP主机拷贝需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。在具有图形用户界面的 WorldWild Web环境于1995年开始普及以前,匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名PTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息,数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登录获取所需的信息资料。虽然目前使用WWW环境已取代匿名FTP成为最主要的信息查询方式,但是匿名FTP仍是 Internet上传输分发软件的一种基本方法
java中UDP,DCP TCP与IP的区别是什么
不知道楼主是什么意思,UDP,DCP TCP与IP都是传输协议吧,那和Java有什么关系呢?
1. IP
是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2. TCP
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
3.UDP
UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
4.DCP?是不是写错了,应该是CDP吧!~
思科发现协议(CDP:Cisco Discovery Protocol)思科发现协议 CDP基本上是用来获取相邻设备的协议地址以及发现这些设备的平台。CDP也可为路由器的使用提供相关接口信息。CDP是一种独立媒体协议,运行在所有思科本身制造的设备上,包括路由器、网桥、接入服务器和交换机。需要注意的是,CDP是工作在 Layer 2的协议,默认情况下,每60秒以 01-00-0c-cc-cc-cc为目的地址发送一次组播通告,当达到180秒的holdtime上限后仍未获得邻居设备的通告时,将清除邻居设备信息。
如何用java连接到ftp上
现在已经封装好了的方法,不需要任何其他知识即可连接的。只需要知道ftp登录用户名、密码、端口、存储路径即可。
package zn.ccfccb.util;
import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class CCFCCBFTP{
/**
*上传文件
*
*@param fileName
*@param plainFilePath明文文件路径路径
*@param filepath
*@return
*@throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception{
FileInputStream fis= null;
ByteArrayOutputStream bos= null;
FTPClient ftpClient= new FTPClient();
String bl="false";
try{
fis= new FileInputStream(plainFilePath);
bos= new ByteArrayOutputStream(fis.available());
byte[] buffer= new byte[1024];
int count= 0;
while((count= fis.read(buffer))!=-1){
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上传文件开始");
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// Log.info("连接远程上传服务器"+"192.168.54.106:"+2021);
// ftpClient.connect("192.168.54.106", 2021);
// ftpClient.login("hkrt-CCFCCBHK","3OLJheziiKnkVcu7Sigz");
FTPFile[] fs;
fs= ftpClient.listFiles();
for(FTPFile ff: fs){
if(ff.getName().equals(filepath)){
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("检查文件路径是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查询文件路径不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
//设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");
return bl;
} catch(Exception e){
throw e;
} finally{
if(fis!= null){
try{
fis.close();
} catch(Exception e){
Log.info(e.getLocalizedMessage(), e);
}
}
if(bos!= null){
try{
bos.close();
} catch(Exception e){
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
/**
*下载并解压文件
*
*@param localFilePath
*@param fileName
*@param routeFilepath
*@return
*@throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception{
FileInputStream fis= null;
ByteArrayOutputStream bos= null;
FileOutputStream fos= null;
FTPClient ftpClient= new FTPClient();
String SFP= System.getProperty("file.separator");
String bl="false";
try{
Log.info("下载并解密文件开始");
Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);
// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);
FTPFile[] fs;
ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl="false";
fs= ftpClient.listFiles();
for(FTPFile ff: fs){
if(ff.getName().equals(fileName)){
bl="true";
Log.info("下载文件开始。");
ftpClient.setBufferSize(1024);
//设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is= ftpClient.retrieveFileStream(fileName);
bos= new ByteArrayOutputStream(is.available());
byte[] buffer= new byte[1024];
int count= 0;
while((count= is.read(buffer))!=-1){
bos.write(buffer, 0, count);
}
bos.flush();
fos= new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下载文件结束:"+localFilePath);
}
}
Log.info("检查文件是否存:"+fileName+""+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");
return bl;
}
return bl;
} catch(Exception e){
throw e;
} finally{
if(fis!= null){
try{
fis.close();
} catch(Exception e){
Log.info(e.getLocalizedMessage(), e);
}
}
if(bos!= null){
try{
bos.close();
} catch(Exception e){
Log.info(e.getLocalizedMessage(), e);
}
}
if(fos!= null){
try{
fos.close();
} catch(Exception e){
Log.info(e.getLocalizedMessage(), e);
}
好了,关于java 什么是ftp协议和Java的ftp操作方法有哪几种的问题到这里结束啦,希望可以解决您的问题哈!