当前位置: 首页 > 知识库问答 >
问题:

前端TMG vs java和php(ftp)

充浩波
2023-03-14

我有一台电脑在前面TMG 7.0和一个公共远程FTP服务器。安装TMG客户端。Windows防火墙已关闭。杀毒软件:McAfee病毒扫描企业版(8.8)AntySpyware企业版(8.8)无附加组件。反病毒测试断断续续。

它无法通过Java和Php连接到服务器。Filezilla,explorer.exe和Go写入程序连接没有问题。

对于Java我得到连接拒绝错误:

java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:182)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:203)

不管我如何试图通过Java联系:

  • Apache FTP客户端(主动/被动-本地/远程/两者)
  • Apache FTPS客户端(所有varians主动式|被动式)
  • 索伦FTP客户端(相同)
  • 插座=新插座(主机,21)

它在等待5分钟后触发连接超时。错误是超时异常。所有变体都通过直接连接、全局代理、ftp代理、超文本传输协议代理以及所有这些组合进行了测试。所有变体都通过IP和主机名进行测试。

无法连接的Php代码示例:

<?php

  $host = "ftphost";
  $connect = ftp_connect($host,21);
  if(!$connect)
  {
    echo("Error: $host");
    exit;
  }
  else
  {
    echo("Cheers: $host");  
  }

?>

但是FileZilla连接没有问题。浏览器连接没有问题。Go编写的程序连接起来没有问题。

你知道什么可以阻止java和PHP吗?我如何找出阻止JRE和Apache的策略或程序设置?

共有2个答案

谷梁镜
2023-03-14

只要我的两分钱。这是我的工作Ftp代码,我已经使用它两年了,主要问题是服务器端如果您启用被动模式,那么您需要在防火墙中打开一系列被动端口,例如2000:4000,以保持连接不被破坏。另外,请确保您的Ftp服务器已针对这些被动端口进行了配置。你可以在网上阅读更多https://slacksite.com/other/ftp.html

import config.AppConfigPropertyReader;
        
        import model.FtpClients;
        import org.apache.commons.io.FileUtils;
        import org.apache.commons.net.ftp.FTP;
        import org.apache.commons.net.ftp.FTPReply;
        import org.apache.commons.net.ftp.FTPSClient;
        import org.apache.log4j.Logger;
        
        import java.io.File;
        import java.io.FileInputStream;
        import java.io.IOException;
        import java.io.InputStream;
        import java.util.ArrayList;
        import java.util.List;
        
        public class ConnectRemote {
        
            private static Logger logger = Logger.getLogger(ConnectRemote.class);
            private static String RemoteFtpLogServerHost = AppConfigPropertyReader.getProperty("RemoteFtpLogServerHost");
            private static String RemoteFtpLogServerTomcatLog = AppConfigPropertyReader.getProperty("RemoteFtpLogServerTomcatLog");
            private static String RemoteFtpLogServerTomcatLogPassword = AppConfigPropertyReader.getProperty("RemoteFtpLogServerTomcatLogPassword");
            private static String LocalTomcatSistemLogPath = AppConfigPropertyReader.getProperty("LocalTomcatSistemLogPath");
        
        
            public static void starttransfers() {
        
                List<FtpClients> ftpuserlist = new ArrayList<FtpClients>();
        
                ftpuserlist.add(new FtpClients(RemoteFtpLogServerTomcatLogPassword, RemoteFtpLogServerTomcatLog, LocalTomcatSistemLogPath));
        
                for (FtpClients ftpuser : ftpuserlist) {
        
                    try {
        
                        ftps = new FTPSClient();
                        //ftps.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
                      
                        ftps.connect(RemoteFtpLogServerHost, 21);
                        int reply = ftps.getReplyCode();
                        if (!FTPReply.isPositiveCompletion(reply)) {
                            ftps.disconnect();
                            throw new IOException("Exception in connecting to FTPS Server");
                        }
                        if (ftps.login(ftpuser.getUser(), ftpuser.getPassword())) {
        
                            ftps.execPBSZ(0);
                            //ftps.execPROT("P"); You have to use reuse ssl enabled ftp server
                            ftps.setBufferSize(1024000);
                            ftps.changeWorkingDirectory("/");
                            ftps.setFileType(FTP.BINARY_FILE_TYPE);
                            ftps.setFileTransferMode(FTP.COMPRESSED_TRANSFER_MODE);
                            ftps.enterLocalPassiveMode();
                            ftps.setControlKeepAliveTimeout(300);
                            
                            //do your logic 
        
                            if (ftps.isConnected()) {
                                try {
                                    ftps.logout();
                                    ftps.disconnect();
                                    ftps = null;
                                    ftpuserlist.clear();
        
                                } catch (IOException e) {
                                    logger.error("Ftps Client Closing " + e.getMessage());
                                }
                            }
        
                        } else {
        
                            logger.error("Cannot Login to Remote Ftps Server");
        
                        }
        
        
                    } catch (Exception e) {
        
                        e.printStackTrace();
                        logger.error("Exception" + e.getMessage());
        
        
                    }
        
        
                }
        
        
            }
    }
曾飞沉
2023-03-14

您可以尝试使用PHP脚本调试问题,如下所示:

<?php
$host = "xx.xx.xx.xx";
$ftpUser = "annonymous";
$ftpPass = null;
$checkPort = @fsockopen($host, 21, $errno, $errstr, 10);
if($checkPort!==false){
    echo "can able to connect ftp server";
    $conn_id = ftp_connect($host);
    if($conn_id!==false){
    echo "\n Ftp server available and connected trying to logged in";
        $loginStatus = ftp_login($conn_id, $ftpUser, $ftpPass);
        if($loginStatus!==false){
            echo "\n Connected to ftp";
        } else {
            echo "\n Please check credentials";
        }
    }
} else {
    echo "server can't reach to ftp server";
}
?>
 类似资料:
  • 不管我们有多少人共同参与同一个项目,我们要确保整个项目的每一行代码都像是同一个人编写的一样。

  • 后端 这是来自领域设置

  • 我目前正在构建一个基于AngularJS的复杂前端网站。后端由PHP和MySQL提供支持。 我有两个问题,都是关于用户权限的。 > 您将如何在前端管理这些权限?你什么时候取回/重新取回特权?您将如何检查每个需要特权的方法? 我正在寻找一个智能解决方案,它不会限制我可以定义的特权数量,但如果没有定义,它也会提供一组默认的基本特权。 关于SQL实现 特权应该应用于特定公司的所有用户。 db模式类似于这

  • 本文向大家介绍前端必学之PHP语法基础,包括了前端必学之PHP语法基础的使用技巧和注意事项,需要的朋友参考一下 写在前面的话   PHP是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP能够包含文本、HTML、CSS以及PHP代码,在服务器上执行,结果以纯文本返回浏览器 代码标识   PHP代码以<?php 开头,以?>结尾,且可以放置在文档中的任何位置   PHP语句以分号(;)结尾,P

  • 在前端使用React,后端使用RESTful API,并通过JSON Web令牌(JWT)进行授权,我们如何处理会话?例如,在登录之后,我从REST获得一个JWT令牌。如果我把它保存到localStorage中,我就容易受到XSS的攻击,如果我把它保存到cookie,除了我把cookie设置为HttpOnly,但是React不能读取HttpOnly cookie(我需要读取cookie以从中获取J

  • 我正在使用magento 1.9社区版,突然我无法访问magento前端和magento后端 这是错误页 跟踪UTF8',Array)../public_html/lib/varien/db/adapter/pdo/mysql.php(504):Zend_db_adapter_pdo_abstract->查询('set NAMES UTF8',Array)../public_html/app/co