sockets - 通过套接字编程在 Azure 辅助角色上进行被动 FTP

标签 sockets azure ftp ip passive-mode

我需要在端口 21 上部署一个带有输入端点的 Azure 辅助角色,以便它可以接受传入的 FTP 连接。这样我就应该能够通过 Filezilla 等 FTP 客户端连接到辅助角色并访问 azure blob 存储。

为此,我能够实现 FTP 命令,如 LIST、RETR、STOR、PORT、USER 和 PASS。所有这些都可以在 FTP 的主动模式下正常工作。

但是当我切换到 FTP 的被动模式(对 Azure Worker Role 执行 PASV 命令)时,我发现了问题。由于我是 Azure 的新手,所以无法跟踪问题。.浏览了一些博客才知道由于Azure Worker角色超出了负载均衡器的范围,因此被动模式需要配置。我看到很少有博客谈论手动配置FTP的Web角色。由于我正在处理Worker角色,配置是否更改以及如何在代码中处理它更重要的是,因为我们不确定角色将部署哪台虚拟机......我如何处理配置

我尝试过的方法:

1.在Azure Worker角色中,我设置了以下端点

FTP 输入 tcp 21

端点1输入tcp 1025

最初在 Start() 上,我在线上有此代码

TcpListener 服务器 = SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["FTP"].IPEndpoint);

在 PASV 模式下我有以下内容

TcpListener 服务器 = SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint); 这样它就在新端口 1025 上打开并发送回客户端。在发送回客户端时,我遇到了如下异常:

SocketErrorCode 为 10053,SocketErrorDesc:System.Net.Sockets.SocketError.ConnectionAborthhed

无法将数据写入传输连接:已建立的连接被主机中的软件中止。

2.其他方式通过使用http://checkip.dyndns.org/,if获取外部IP地址我从中获取IPadress,我是否需要使用代码从代码中获取端口 RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint???

我真的对 Azure 的东西和 FTP 配置感到很困惑。

我浏览了以下文章,但找不到如何以编程方式配置辅助角色(设置端口范围,从代码中检索)以在被动模式下工作。

http://www.itq.nl/blogs/post/Walkthrough-Hosting-FTP-on-IIS-75-in-Windows-Azure-VM.aspx http://angelolaris.blogspot.com/

问候, 维韦克

最佳答案

首先我想确认的是,不确定您是否也按如下方式或现在启动监听器:

TcpListener myPortListener = new TcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MY_PORT"].IPEndpoint);
myPortListener.Start();

接下来,当您的辅助角色中有上述代码时,端口开始接受传入请求,并且任何绑定(bind)到 IP/端口的应用程序都将接收数据包。

如果您真的想了解如何让它在您的辅助角色中工作,您可以做的是,following this guidance to setup in a Web Role首先,然后尝试在您的辅助角色中复制相同的配置。做起来并不复杂,但首先您需要了解事情是如何工作的,然后您才能实现它本身。

您的要求也不清楚,因为我不确定您为什么需要这样的配置,因为您可以从辅助角色直接连接到 Azure Blob 存储(如果您的数据位于 Azure Blob 存储)并访问内容,为什么FTP/本地连接使其变得复杂。如果您重新审视您的应用程序架构,可能就不需要做这样的工作。

关于sockets - 通过套接字编程在 Azure 辅助角色上进行被动 FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191183/

相关文章:

c++ - pcap_stats 是否在 Ubuntu 14.04 LTS 上实现?

c - 如何在 c 套接字中使用 select 等待特定响应而不忽略其他响应?

c# - Windows Azure AppFabric 缓存是否支持高可用性?

linux - 通过 FTP 从 windows 发送命令到 linux

Gradle ant ftp错误: "425 Connection timed out"

java - 使用java套接字编程查询文件传输

c - udp sendto无法实时发送整个txt文件

azure - 无法创建 Azure 文件共享 : The remote name could not be resolved: 'calcpaebooks.file.core.windows.net'

azure - 使用 "az webapp log tail"过滤日志消息

r - 如何使用 R 通过 FTP 推送 .csv 文件?