gpt4 book ai didi

windows - FTP 客户端 Filezilla 和 Ftpuse 工作,但 Windows 资源管理器无法进入 PASV 模式

转载 作者:可可西里 更新时间:2023-11-01 10:25:56 30 4
gpt4 key购买 nike

我使用 .NET 4.0 创建了一个自定义 FTP 服务器。我在同一台 Windows 7 机器上同时运行客户端和服务器,并且我的防火墙完全被禁用。我可以使用 FileZilla 和 FtpUse 连接到它,建立 PASV 模式,然后浏览文件夹的内容就好了。尝试通过 Windows 资源管理器连接时出现问题。我可以成功登录,但是当 Explorer 发送 PASV 命令时(请参阅下面的客户端/服务器交换),Explorer 会弹出一个消息框,显示“FTP 文件夹错误”、“在 FTP 服务器上打开该文件夹时发生错误。请确保您有权访问该文件夹”。下面的详细信息是它从服务器收到的最后两个响应。我找到了这个 ( http://support.microsoft.com/kb/2754804/en-us) 更新并安装了它,但它没有帮助。任何人都知道这可能是什么?我在 PASV 命令返回响应之前打开了 TCP 监听器,所以我认为这不是时间问题。

<< 220 ***********.
>> USER Domain\******
<< 331 Password required.
>> PASS *******
<< 230 Domain\****** logged in.
>> opts utf8 on
<< 200 OPTS UTF8 command successful - UTF8 encoding now on.
>> syst
<< 215 Windows_NT.
>> site help
<< 200
<< 200 End of help.
>> PWD
<< 257 "/".
>> TYPE A
<< 200 Type set to A.
>> PASV
<< 227 Entering Passive Mode (10,0,0,4,7,100)

最佳答案

本来我以为问题可能与

有关

Windows explorer hangs up FTP connection after PASV command

但我尝试提前打开被动端口,但没有帮助。相反,问题与 Windows 资源管理器的严格性有关。作为 227 响应的一部分提供的 IP 地址必须与客户端最初连接的 FTP 站点的地址相同。换句话说,如果客户端使用

连接
ftp://localhost 

(解析为 127.0.0.1),随 PASV 响应提供的 IP 地址必须为 127.0.0.1 - 否则,Windows 资源管理器将出错。这并不是说不能使用 IPAddress.Any 打开被动端口 - 它可以:

var listener = new TcpListener(IPAddress.Any, 0)

但是,结果返回的地址一定还是127.0.0.1(以上面为例)。如果客户端最初连接机器的 IP,例如 10.x.x.x,则 227 响应返回的 IP 地址也必须是 10.x.x.x。

FileZilla 必须以某种方式更加宽容。

关于windows - FTP 客户端 Filezilla 和 Ftpuse 工作,但 Windows 资源管理器无法进入 PASV 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478594/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com