从Windows命令提示符向tcplistener发送了类似“PWD”的keepalive命令

时间:2012-10-20 06:52:09

标签: command-line azure timeout ftp-client

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

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

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

       ftp>> put localfile remotefile

正好在数据传输1分钟后,连接断开,错误为 “连接由主机关闭”。由于在大数据传输期间,FTP的控制连接将处于空闲状态。

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

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

我尝试使用代码将来自tcpclient的keep alive消息发送到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);

0 个答案:

没有答案