这个问题就出在防火墙外网的设置上,解决方法如下图所示:
打开防火墙;
2切换到“高级”选项卡;
3双击“外网”,或者选中“外网”后再点击右侧的“配置”按钮;
4在d出的页面中勾选“FTP服务器”,点击下面的“确定”按钮即可。
扩展资料:
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
一般来说用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。
Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的 *** 作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种 *** 作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。
基于不同的 *** 作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
ftp协议有两种工作方式:port方式和pasv方式,中文意思为主动式和被动式。
port(主动)方式的连接过程是:客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器从20端口向客户端的空闲端口发送连接请求,建立一条数据链路来传送数据。
pasv(被动)方式的连接过程是:客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端向服务器的空闲端口发送连接请求,建立一条数据链路来传送数据。
参考资料:
port(主动)方式的连接过程是:客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器从20端口向客户端的空闲端口发送连接请求,建立一条数据链路来传送数据。
pasv(被动)方式的连接过程是:客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端向服务器的空闲端口发送连接请求,建立一条数据链路来传送数据。
使用IE不能访问ftp的原因
打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。
详细信息:
无法与服务器建立连接
最后修改这里的设置,把勾去掉就解决了。
方法:
1 打开IE的菜单"工具"->"Internet 选项";
2 点击“高级”标签卡;
3 将“浏览”节点下的“使用被动FTP(为防火墙和DSL调制解调器兼容性)”前面的勾去掉。
因为port方式在传送数据时,由服务器主动连接客户端,所以,如果客户端在防火墙或nat网关后面,用port方式将无法与internet上的ftp服务器传 送文件。这种情况需要使用pasv方式。几乎所有的ftp客户端软件都支持这两种方式。特殊的典型例子是ie,ie默认是用port方式的。如果要在ie 里启用pasv方式,请打开ie,在菜单里选择:工具 -> internet选项 -> 高级,在“使用被动ftp”前面打上钩(需要ie60以上才支持)
上传时提示:将文件复制到ftp服务器出错,请检查是否有权限将文件放到该服务器上。此问题的原因:设置错误造成的。
解决的方法和 *** 作步骤如下:
1、首先,直接在开始栏的搜索框中输入“
Internet”,然后选择[Internet信息服务(IIS)管理器]选项,然后单击以进入服务器管理器,如下图所示,然后进入下一步。
2、其次,完成上述步骤后,在左侧连接框中的[网站]选项中选择创建的FTP服务器,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,单击右侧的[高级设置]选项,进入“FTP高级设置”对话框,如下图所示,然后进入下一步。
4、然后,完成上述步骤后,在“高级设置”对话框中找到[允许 UTF-8]选项,单击下拉列,然后选择[False]选项,如下图所示,然后进入下一步。
5、最后,完成上述步骤后,必须重新启动FTP服务器才能生效。单击右侧菜单栏中的[重新启动]选项,如下图所示。这样,重新启动之后,问题就解决了。
FTP数据读写失败一般有几种情况:
文件损失,不完整,导致传输过程验证失败。
文件使用中,比如在杀毒或者编辑中的文件,系统占用是不能传输的。
权限不足,比如针对某些用户,是不能传输部分文件的,比如exe等风险文件。
特殊情况,比如文件传输过程中,目录满了,存储失败,这个是由服务器管理员控制的,如果目录体积不够文件传输的,联系管理员协商解决。
java测试连接ftp是否连通可以使用判断是否有异常来决定,实例如下:
/connectServer
连接ftp服务器
@throws javaioIOException
@param path 文件夹,空代表根目录
@param password 密码
@param user 登陆用户
@param server 服务器地址
/
public void connectServer(String server, String user, String password, String path)
throws IOException
{
// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
ftpClient = new FtpClient();
ftpClientopenServer(server);
ftpClientlogin(user, password);
//path是ftp服务下主目录的子目录
if (pathlength() != 0) ftpClientcd(path);
//用2进制上传、下载
ftpClientbinary();
}
/
upload
上传文件
@throws javalangException
@return -1 文件不存在
-2 文件内容为空
>0 成功上传,返回文件的大小
@param newname 上传后的新文件名
@param filename 上传的文件
/
public long upload(String filename,String newname) throws Exception
{
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
javaioFile file_in = new javaioFile(filename);
if (!file_inexists()) return -1;
if (file_inlength()==0) return -2;
os = ftpClientput(newname);
result = file_inlength();
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = isread(bytes)) != -1) {
oswrite(bytes, 0, c);
}
} finally {
if (is != null) {
isclose();
}
if (os != null) {
osclose();
}
}
return result;
}
/
upload
@throws javalangException
@return
@param filename
/
public long upload(String filename)
throws Exception
{
String newname = "";
if (filenameindexOf("/")>-1)
{
newname = filenamesubstring(filenamelastIndexOf("/")+1);
}else
{
newname = filename;
}
return upload(filename,newname);
}
/
download
从ftp下载文件到本地
@throws javalangException
@return
@param newfilename 本地生成的文件名
@param filename 服务器上的文件名
/
public long download(String filename,String newfilename)
throws Exception
{
long result = 0;
TelnetInputStream is = null;
FileOutputStream os = null;
try
{
is = ftpClientget(filename);
javaioFile outfile = new javaioFile(newfilename);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = isread(bytes)) != -1) {
oswrite(bytes, 0, c);
result = result + c;
}
} catch (IOException e)
{
eprintStackTrace();
}
finally {
if (is != null) {
isclose();
}
if (os != null) {
osclose();
}
}
return result;
}
/
取得某个目录下的所有文件列表
/
public List getFileList(String path)
{
List list = new ArrayList();
try
{
DataInputStream dis = new DataInputStream(ftpClientnameList(path));
String filename = "";
while((filename=disreadLine())!=null)
{
listadd(filename);
}
} catch (Exception e)
{
eprintStackTrace();
}
return list;
}
/
closeServer
断开与ftp服务器的链接
@throws javaioIOException
/
public void closeServer()
throws IOException
{
try
{
if (ftpClient != null)
{
ftpClientcloseServer();
}
} catch (IOException e) {
eprintStackTrace();
}
}
public static void main(String [] args) throws Exception
{
FtpUtil ftp = new FtpUtil();
try {
//连接ftp服务器
ftpconnectServer("10163715", "cxl", "1", "info2");
/ 上传文件到 info2 文件夹下 /
Systemoutprintln("filesize:"+ftpupload("f:/download/Installexe")+"字节");
/ 取得info2文件夹下的所有文件列表,并下载到 E盘下 /
List list = ftpgetFileList("");
for (int i=0;i<listsize();i++)
{
String filename = (String)listget(i);
Systemoutprintln(filename);
ftpdownload(filename,"E:/"+filename);
}
} catch (Exception e) {
///
}finally
{
ftpcloseServer();
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)