`
lenozhi
  • 浏览: 52488 次
社区版块
存档分类
最新评论

再次小小的修改common-net中ftp包

阅读更多
起因:ftp协议八几年定的,那会还没有nat转换,ftp协议中pasv命令会把ip地址和端口返回给客户端,这些返回值是在网络包的数据部分,那么网络层的nat转换自然是不去转的了,除非防火墙带应用层包过滤功能,好像叫Alg吧,不然这个转换功能只能自己做.

举个例子:

ftp server对外IP: 192.168.56.34

[size=medium]一个机构的网络把这个ip转成内部地址:172.16.56.34 ,供内部使用.

内部客户发起ftp连接到172.16.56.34,没有问题连接成功.
发起pasv命令,这回服务器返回的是192.168.56.34而不是172.16.56.34,原因上面讲了.
客户收到后,解析,然后进行数据连接,很明显连不通.路由不到.

解决办法:

1. 防火墙使用应用层包过滤,可以解决.
2. 改客户端程序.

ftp客户端的用的是apache的common-net包,
FtpClient extends Ftp extends SocketClient

connect方法在SocketClient中,在SocketClient中加个变量_set_passive_host,把connect连接时的ip在connect方法里赋给_set_passive_host

然后还有一个方法就是解析pasv的返回值,方法在FtpClient中,名字我忘了.
里面解析完的ip是存放到_passive_host中,那么在这个方法里把_passive_host的值等于_set_passive_host就好了.


基于上面的改动,我们调用的程序不用做任何修改就可以适应这种网络环境了.


小结:基础知识要扎实呀,不然没得玩.呵
[/size]



分享到:
评论

相关推荐

    common-net-ftp

    ftp upfile FTPClient java

    common-image-3.1.1-API文档-中文版.zip

    赠送jar包:common-image-3.1.1.jar; 赠送原API文档:common-image-3.1.1-javadoc.jar; 赠送源代码:common-image-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-image-3.1.1.pom; 包含翻译后的API文档:...

    Android 利用commons-net-3.3实现ftp上传下载Demo

    本教程将深入讲解如何利用Apache Commons Net库的3.3版本在Android应用中实现FTP功能。 首先,Apache Commons Net是一个Java库,提供了一系列用于网络通信的类和实用工具,包括FTP客户端组件。在Android项目中,...

    完美解决:commons-net-1.4.1.jar包中ftp应用的几点问题

    使用commons-net-1.4.1.jar,FTPClient连接成功了,但是ftpClient.listFiles(path).length=0 ...不要增加类,也不要修改任何代码。 不要犹豫了,干掉commons-net-1.4.1.jar包,用这个替换吧,世界从此安静了。。。

    common-io-3.1.1-API文档-中文版.zip

    赠送jar包:common-io-3.1.1.jar; 赠送原API文档:common-io-3.1.1-javadoc.jar; 赠送源代码:common-io-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-io-3.1.1.pom; 包含翻译后的API文档:common-io-...

    common-io,common-net打包奉送

    在Java编程领域,Apache Commons是开发人员常用的工具库之一,提供了许多实用的组件来简化...它们是任何Java项目中处理输入输出和网络通信的重要组成部分,尤其在处理FTP文件传输时,能显著提高代码的可读性和效率。

    commons-net-jar包.zip

    Telnet协议在commons-net中也有很好的实现,包括TelnetClient类,用于建立和管理Telnet会话。开发者可以通过它与远程服务器进行交互,执行命令或获取服务器输出。 4. **NNTP支持** 新闻组协议NNTP(Network News ...

    proto-google-common-protos-1.17.0-API文档-中文版.zip

    赠送jar包:proto-google-common-protos-1.17.0.jar; 赠送原API文档:proto-google-common-protos-1.17.0-javadoc.jar; 赠送源代码:proto-google-common-protos-1.17.0-sources.jar; 赠送Maven依赖信息文件:...

    flink-table-common-1.12.7-API文档-中文版.zip

    赠送jar包:flink-table-common-1.12.7.jar; 赠送原API文档:flink-table-common-1.12.7-javadoc.jar; 赠送源代码:flink-table-common-1.12.7-sources.jar; 赠送Maven依赖信息文件:flink-table-common-1.12.7....

    Apache Common-net Ftp客户端实例

    在本文中,我们将深入探讨如何使用Apache Commons Net库中的FTP客户端类来实现FTP文件传输操作。首先,我们需要理解FTP的基本概念。 FTP是一种应用层协议,用于在互联网上进行文件传输。它允许用户从远程服务器上传...

    commons-net-3.7-ftp.jar

    主要用于实现ftp文件传输,网上没有很清晰的资料,故而我把自己的资料与ftpclient挂钩,希望让你尽快实现自己的项目

    springfox-swagger-common-3.0.0-API文档-中文版.zip

    赠送jar包:springfox-swagger-common-3.0.0.jar; 赠送原API文档:springfox-swagger-common-3.0.0-javadoc.jar; 赠送源代码:springfox-swagger-common-3.0.0-sources.jar; 赠送Maven依赖信息文件:springfox-...

    最全的common-FileUpload.jar包

    这个"最全的common-FileUpload.jar包"包含了处理HTTP请求中的多部分数据,特别是文件上传的功能。它使得开发者能够方便地从Web表单中接收并处理文件。 Apache Commons FileUpload是Apache软件基金会的一个开源项目...

    common-io,common-fileupload.jar等jar包

    在Java开发中,`common`系列的jar包是由Apache软件基金会的Apache Commons项目提供的,旨在为开发者提供一些通用的功能库。这些库包含了处理输入/输出(I/O)、文件上传(FileUpload)等常见任务的工具类和接口。...

    hadoop-common-2.2.0-bin-32.rar

    hadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-...

    hadoop-common-2.7.3-bin-master包含hadoop.dll、winutils.exe

    Hadoop是大数据处理领域中的一个核心框架,由Apache软件基金会维护。它主要设计用于分布式存储和计算,使得大规模数据处理变得更加高效和便捷。Hadoop 2.7.3是Hadoop的一个版本,其中包含了`hadoop-common-2.7.3-bin...

    weixin-java-common-3.5.0-API文档-中文版.zip

    赠送jar包:weixin-java-common-3.5.0.jar; 赠送原API文档:weixin-java-common-3.5.0-javadoc.jar; 赠送源代码:weixin-java-common-3.5.0-sources.jar; 赠送Maven依赖信息文件:weixin-java-common-3.5.0.pom;...

    hadoop-common-2.7.2.jar

    hadoop-common-2.7.2.jar

    activiti-common-rest-5.21.0-API文档-中英对照版.zip

    赠送jar包:activiti-common-rest-5.21.0.jar; 赠送原API文档:activiti-common-rest-5.21.0-javadoc.jar; 赠送源代码:activiti-common-rest-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-common-rest-...

    wildfly-common-1.5.2.Final-API文档-中文版.zip

    赠送jar包:wildfly-common-1.5.2.Final.jar; 赠送原API文档:wildfly-common-1.5.2.Final-javadoc.jar; 赠送源代码:wildfly-common-1.5.2.Final-sources.jar; 赠送Maven依赖信息文件:wildfly-common-1.5.2....

Global site tag (gtag.js) - Google Analytics