Windows Server FTP详解

搭建:

Windows Server 2012R2 FTP服务介绍及搭建_windows2012server r2ftp怎么做?-CSDN博客

问题: 

https://www.cnblogs.com/123525-m/p/17448357.html

 Java使用

被动FTP(PASV)

被动FTP模式在数据连接建立过程中,由服务器端发起数据端口连接,客户端被动接受。这对于客户端位于防火墙或NAT之后的场景特别有用。

import org.apache.commons.net.ftp.FTPClient;FTPClient ftpClient = new FTPClient();
ftpClient.enterLocalPassiveMode(); // 进入被动模式
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// ...进行文件传输操作...
ftpClient.logout();
ftpClient.disconnect();

主动FTP(PORT)

主动FTP模式在数据连接建立过程中,由客户端发起数据端口连接,服务器端被动接受。主动FTP模式在客户端和服务器端都需要进行适当的配置以支持这种模式。

要切换到主动FTP模式,你需要更改FTP服务器的配置,这可能涉及到与你的网络管理员或服务提供商进行沟通。对于Java代码,你可以使用以下方式:

 
import org.apache.commons.net.ftp.FTPClient;FTPClient ftpClient = new FTPClient();
ftpClient.enterLocalActiveMode(); // 进入主动模式
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// ...进行文件传输操作...
ftpClient.logout();
ftpClient.disconnect();

从被动FTP到主动FTP的转换

如果你需要从被动FTP切换到主动FTP,并且你无法更改FTP服务器的配置(例如,你正在使用一个你不能更改其设置的第三方FTP服务器),那么你需要更改你的客户端配置。你可以通过以下步骤实现:

  1. 创建一个新的临时端口。这个端口将用于建立数据连接。你可以使用任何你喜欢的工具或库来创建这个端口。例如,你可以使用Java的ServerSocket类来创建一个本地服务器。
  2. 配置你的FTP客户端使用这个临时端口。这可以通过在创建FTPClient实例时设置其本地IP和端口来实现。例如:
FTPClient ftpClient = new FTPClient();
ftpClient.setLocalPort(port); // 设置本地端口为你的临时端口
ftpClient.enterLocalActiveMode(); // 进入主动模式
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// ...进行文件传输操作...
ftpClient.logout();
ftpClient.disconnect();

这样,你的FTP客户端将使用你指定的本地端口来建立数据连接,而不是由服务器端发起连接。这实际上是模拟了主动FTP的工作方式。但请注意,这种方法可能不适用于所有情况,特别是当你的客户端位于防火墙或NAT之后时。在这种情况下,你可能需要找到其他方法来解决问题,例如配置你的防火墙或NAT设备来允许这种类型的连接。

Windows FTP服务设置

需要注意的是被动端口设置完后要重启一下【Microsoft FTP Service】服务才能生效

如何配置被动模式(PASV)的数据端口?

1、打开IIS管理器,点击左侧的服务器,进入服务器设置主页找到 FTP功能 中的 FTP防火墙支持 点击进入

2、在数据通道端口范围中填写端口范围,例如51025-51050,(如果设置一个端口,例如设置50001-50001)然后点击 应用 设置

3、 在开始菜单 >> 管理工具 >> 服务 中,找到【Microsoft FTP Service】服务,重启该服务才能生效

使用ftp服务端口不能通过外网访问,可以用nps透传 需要注意的是 iis防火墙的外部IP地址要设置成透传后的外部地址

如果是云服务器 在设置完被动端口范围后,云服务器安全组开放下这个端口范围,然后重新连接FTP正常链接了

常见错误:

创建ftp用户之后,配置好了FTP的身份验证和FTP的认证规则,但是无法访问。

原因是“FTP”和“Anonymous”是保留字。不能创建包含这些名称的> IIS 管理器用户帐户。

注意事项:

之前FTP动态端口需要开放1024-65535,但由于现有受支持的Windows操作系统动态端口范围有调整为49152-65535

Windows上FTP搭建及主被动传输模式测试-腾讯云开发者社区-腾讯云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 ——数据链路层(广域网)

计算机网络 —— 广域网 什么是广域网PPP协议PPP协议的三个部分PPP协议的帧格式 HDLC协议HDLC的站HDLC的帧样式 PPP和HDLC的异同 我们今天来看广域网。 什么是广域网 广域网(Wide Area Network,简称WAN)是一种地理覆盖范围广泛的计算机网络…

Redis篇 list类型在Redis中的命令操作

list在redis基本的命令 一.基本命令1.lpush和range2.lpushx rpushx3.lpop rpop4.lindex linsert llen5.lrem6.ltrim lset7.blpop brpop 一.基本命令 list在redis中相当于数组或者顺序表. 1.lpush和range 2.lpushx rpushx 3.lpop rpop 4.lindex linsert llen 如果要插入的列表中…

【Kubernetes】9-Pod控制器

一、什么是 pod 的控制器 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层 确保pod资源符合预期状态;pod的资源故障时会进行重启; 当重启策略无效时,则会重新新建pod的资源 二…

一维时间序列信号的小波时间散射变换(MATLAB 2021)

小波散射变换的目的在于获取第一层次的特征信息,即免疫平移、轻微形变的信息。而低通的滤波器能够获取输入信号的概貌,获取反映其整体大尺度特征的信息,以图像为例,由低通滤波器选取的信号对于图像的平移、伸缩、旋转等局部变化有…

Mysql 常用命令 详细大全【分步详解】

1、启动和停止MySQL服务 // 暂停服务 默认 80 net stop mysql80// 启动服务 net start mysql80// 任意地方启动 mysql 客户端的连接 mysql -u root -p 2、输入密码 3、数据库 4、DDL(Data Definition Language )数据 定义语言, 用来定义数据库对象(数…

空间不够用了怎么办

空间告急啊哥们 整理一下清理空间有用的一些blog吧。 【linux】公共服务器如何清理过多的.cache缓存 linux根目录空间不足,追加空间到根目录下 【linux】linux磁盘空间 目录查看清理 和 文件查看清理

simulink如何配置自动代码生成

simulink如何配置我们的自动代码生成 仿真时间设置我们仿真我们这个模型的一个时间,目前默认它是10秒。如果把它改成“INF”,它就是会一直仿真。 求解器选择,因为我们使用的是嵌入式代码,因此我们一般嵌入式是一个数字量。所以选…

【AI大模型】Transformers大模型库(三):特殊标记(special tokens)

目录​​​​​​​ 一、引言 二、特殊标记(special tokens) 2.1 概述 2.2 主要功能 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服…

RK3568技术笔记之二 SAIL-RK3568开发板介绍

开发板是我们自己的,后面我用开发板和工控机来做技术笔记。不用多讲。我先把核心板和开发板规格书搬过来,这篇文章里都是自己的知识产权,所以就不标准引用来源了。 先看看核心板的规格书吧。 再来一下开发板的规格书 看完规格书,…

用cocos2d-python绘制游戏开发的新篇章

用cocos2d-python绘制游戏开发的新篇章 第一部分:背景 在游戏开发的世界中,寻找一个强大而灵活的框架至关重要。cocos2d-python是一个Python游戏开发框架,它提供了一套丰富的功能,用于创建2D游戏、图形和交互式应用。基于流行的c…

如何在 Java 中使用 JOptionPane 显示消息对话框

在 Java 开发中,JOptionPane 是一个非常实用的类,可以用来显示各种类型的对话框,例如信息对话框、警告对话框、错误对话框等。今天,我们将深入探讨如何使用 JOptionPane.showMessageDialog 方法来显示消息对话框,以及如…

完美的移动端 UI 风格

完美的移动端 UI 风格

webgl_decals

ThreeJS 官方案例学习&#xff08;webgl_decals&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div></div> </template> <script> // 光线投射相关代码 https://threejs.org/docs/index.html#api/z…

干货满满!Stable Diffusion 从入门到精通之提示词手册,免费分享,自学转行,零基础首选!

Stable Diffusion 技术把 AI 图像生成提高到了一个全新高度&#xff0c;文生图 Text to image 生成质量很大程度上取决于你的提示词 Prompt 好不好。本文从“如何写好提示词”出发&#xff0c;从提示词构成、调整规则和 AIGC辅助工具等角度&#xff0c;对文生图的提示词输入进行…

模式识别涉及的常用算法

一、线性回归 1.算法执行流程&#xff1a; 算法的执行流程可以简述如下&#xff1a; 导入必要的库&#xff1a; 导入NumPy库&#xff0c;用于数值计算。导入Matplotlib库&#xff0c;用于数据可视化。导入Pandas库&#xff0c;用于数据处理&#xff08;尽管在这个例子中&#…

开关电源基本原理1

目录 内容概述 关于电感 认识电感 电感充电 电感储能 电感充电 电感参数 电感放电 利用电感升压 电感电流波形 伏秒法则 电流纹波率 电感电流三种导电模式 电流纹波率与频率的关系 电流纹波率与电感值的关系 电感值与电感体积 电路纹波率r的最优值 电感值与电…

Flutter开发效率提升1000%,Flutter Quick教程之定义Api(四)

现在我们来讲讲&#xff0c;如何建立Api 响应数据的变量。 这个变量&#xff0c;本质上就是对根据json数据生成model的引用。 这个name就是引用名。 这个path&#xff0c;就是引用的Model Data里面的具体字段&#xff0c;在实际操作过程中&#xff0c;校验是由右边的json数据…

从运维故障中你都学到了什么?

一阵急促尖锐的铃声响起&#xff0c;王一搏忐忑不安地接起电话&#xff0c;被告知系统有20台服务器批量重启。 20 台&#xff01;批量重启&#xff01;意识到问题的严重性&#xff0c;王一搏迅速调整好状态&#xff0c;准备投身一场激烈的救火工作中。 然而事件的走向却远远超…

JVM的内存结构

JVM 内存结构 方法区: 方法区主要用于存储虚拟机加载的类信息、常量、静态变量&#xff0c;以及编译器编译后的代码等数据。 程序计数器 由于在JVM中&#xff0c;多线程是通过线程轮流切换来获得CPU执行时间的&#xff0c;因此&#xff0c;在任一具体时刻&#xff0c;一个CP…

kali配置静态ip

kali配置静态ip 因为一些环境需要&#xff0c;本地linux主机需要搭建一个桥接模式的网络&#xff0c;那么直接就在kali中配置了&#xff0c; 打开vim /etc/network/interfaces 这里就需要自己配置一下ip&#xff0c;网关&#xff0c;路由等内容 这里参考&#xff1a;参考链接 …