0

由于我在 Azure 辅助角色中实现了 TCP 侦听器,以侦听端口 21 上的传入请求。

从 Windows 命令提示符(cmd.exe)连接到 FTP 时,连接成功。

但是,当我对 600MB 这样的大文件发出 PUT 命令时,比如

       ftp>> put localfile remotefile

数据传输1分钟后,连接断开,错误为“连接被主机关闭”。由于在大数据传输过程中,FTP的控制连接会空闲。

我怀疑由于 Azure 负载均衡器终止了空闲 1 分钟的连接。

您的任何输入是否是终止连接的 Azure 负载平衡器,或者 Windows 上是否有任何注册表设置,我可以增加 ftp 客户端的超时时间,或者任何会杀死空闲连接的防火墙设置。

我尝试使用以下代码将保持活动消息从 tcpclient 发送到 tcplistener,但未能成功。

           int size = sizeof(UInt32);
                UInt32 on = 1;
                UInt32 keepAliveInterval = 10000; //Send a packet once every 10 seconds.
                UInt32 retryInterval = 1000; //If no response, resend every second.
                byte[] inArray = new byte[size * 3];
                Array.Copy(BitConverter.GetBytes(on), 0, inArray, 0, size);
                Array.Copy(BitConverter.GetBytes(keepAliveInterval), 0, inArray, size, size);
                Array.Copy(BitConverter.GetBytes(retryInterval), 0, inArray, size * 2, size);

Connection.OutboundTcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, True) Connection.OutboundTcpClient.Client.IOControl(IOControlCode.KeepAliveValues, inArray,null);

4

0 回答 0