Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 通过套接字编程在Azure Worker角色上使用被动FTP_Sockets_Azure_Ftp_Ip_Passive Mode - Fatal编程技术网

Sockets 通过套接字编程在Azure Worker角色上使用被动FTP

Sockets 通过套接字编程在Azure Worker角色上使用被动FTP,sockets,azure,ftp,ip,passive-mode,Sockets,Azure,Ftp,Ip,Passive Mode,我需要在端口21上部署一个具有输入端点的Azure Worker角色,以便它可以接受传入的FTP连接。这样,我应该能够通过FTP客户端(如Filezilla)连接到Worker角色,并访问Azure blob存储 为此,我能够实现FTP命令,如LIST、RETR、STOR、PORT、USER和PASS。所有这些都可以在FTP的活动模式下正常工作 但当我切换到FTP的被动模式(对Azure Worker角色执行PASV命令)时,我发现了这个问题。因为我是Azure的新手,所以无法跟踪问题。通过查看

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

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

但当我切换到FTP的被动模式(对Azure Worker角色执行PASV命令)时,我发现了这个问题。因为我是Azure的新手,所以无法跟踪问题。通过查看一些博客,我了解到,由于Azure Worker角色超出了负载平衡器的范围,因此被动模式需要配置。我看到了一些关于FTP的Web角色手动配置的博客。因为我正在处理Worker角色,由于我们不确定角色将部署哪台vm机器,配置是否会更改,以及如何在代码和其他方面进行处理..我如何处理配置

我尝试的方式:

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

FTP输入tcp 21

端点1输入tcp 1025

最初在Start()上,我有一行代码

TcpListener server=SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“FTP”].IPEndpoint)

在PASV模式下,我有以下几点

TcpListener server=SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“Endpoint1”].IPEndpoint); 因此,它将在新端口1025上打开并发送回客户端。在发送回客户端时,我得到如下异常:

SocketErrorCode为10053,SocketerRorDescr:System.Net.Sockets.SocketError.Connection无效

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

2.通过使用获取外部IP地址的另一种方式,我从中获取IPadress,是否需要使用从代码中获取端口 RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“Endpoint1”]。IPEndpoint

我真的很困惑Azure的东西和FTP配置

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

http://angelolaris.blogspot.com/

问候,,
Vivek

首先,我想我可以确认的是,我不确定你是按照以下方式还是现在开始收听:

TcpListener myPortListener = new TcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MY_PORT"].IPEndpoint);
myPortListener.Start();
接下来,当您的工作者角色中有上述代码时,端口开始接收传入请求,任何绑定到IP/端口的应用程序都将接收数据包

如果您真的想了解如何让它在您的工作者角色中工作,您可以做的是,首先,然后尝试在您的工作者角色中复制相同的配置。这并不复杂,但首先您需要了解事物是如何工作的,然后才能实现它本身


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

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

TcpListener myPortListener = new TcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MY_PORT"].IPEndpoint);
myPortListener.Start();
接下来,当您的工作者角色中有上述代码时,端口开始接收传入请求,任何绑定到IP/端口的应用程序都将接收数据包

如果您真的想了解如何让它在您的工作者角色中工作,您可以做的是,首先,然后尝试在您的工作者角色中复制相同的配置。这并不复杂,但首先您需要了解事物是如何工作的,然后才能实现它本身


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

谢谢您的回答。我将浏览您提供的链接并与您联系。我唯一关心的是,我们没有IIS作为工作人员,我如何处理上面链接中提到的配置。无论如何,让我再看一次。再次感谢。对于学习过程,您可以使用webrole(webrole只是IIS中的工作者角色)并使用学习在没有IIS的工作者角色中实现同样的事情。感谢您的回答。我将通过您提供的链接返回给您。我唯一关心的是,我们没有IIS在工作者角色中,我如何处理上面链接中提到的配置。无论如何,让我再看一次。再次感谢。对于学习过程,您可以使用webrole(webrole只是具有IIS的工作者角色),并使用学习在不具有IIS的工作者角色中实现相同的内容。