FTP登陆 出现] 连接被关闭;传输已放弃

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP登陆 出现] 连接被关闭;传输已放弃相关的知识,希望对你有一定的参考价值。

状态:> [2009-09-10 13:54:22] 该站点支持 features。
状态:> [2009-09-10 13:54:22] 该站点支持 SIZE。
命令:> [2009-09-10 13:54:22] REST 100
[2009-09-10 13:54:22] 350 Restarting at 100.
状态:> [2009-09-10 13:54:22] 该站点可以续传中断的下载。
命令:> [2009-09-10 13:54:22] REST 0
[2009-09-10 13:54:22] 350 Restarting at 0.
命令:> [2009-09-10 13:54:22] PASV
[2009-09-10 13:54:22] 227 Entering Passive Mode (118,126,5,253,11,109).
命令:> [2009-09-10 13:54:22] LIST
状态:> [2009-09-10 13:54:22] 正在连接 FTP 数据 socket... 118.126.5.253:2925...
[2009-09-10 13:54:23] 426 Connection closed; transfer aborted.
错误:> [2009-09-10 13:54:23] 连接被关闭;传输已放弃。

另外:用IE也打不开,请赐教,谢谢!
感谢大家的回答,问题找出来了,是移动网络问题,移动收购铁通网络。我换电脑的宽带什么问题都没有了。

参考技术A 朋友,这是你的电脑系统文件被顽固木马破坏!(答案原创,原作者:力王历

史)提示:急救箱无法联网,就用:“离线模式”!

1.下载个“360系统急救箱”,已经安装了“360安全卫士”的朋友,直接打开

“查杀木马”,“自定义扫描”的下面的“360系统急救箱”,点击它:

【1】。开始急救!急救完毕后,立即处理,重启!

【2】。开机后,“文件恢复区”,彻底删除文件!

【3】。“系统修复”,全选,立即修复!【关键】

【4】。网络修复,开始修复,重启电脑!【关键】

【5】。dll文件恢复,扫描一下,如果有丢失,添加恢复,没有就行了!

2。用“360安全卫士”的“系统修复”,点“IE常用设置”,“修改主页”,

“使用360安全网址导航”,点:“一键修复”!

3。用“360安全卫士”的“扫描插件”,然后再点:“清理插件”,把“恶评

插件”删除!

4。再用“360杀毒双引擎版”,勾选“自动处理扫描出的病毒威胁”,“全盘

扫描”与“自定义扫描”,病毒木马,再点删除!重启电脑后,来到“隔离

区”,点“彻底删除”!

5。木马查杀,“全盘扫描”与“自定义扫描”,查杀到木马,立即处理!重

启!“文件恢复区”,彻底删除!

6。再不行,试试:金山急救箱,勾选“扩展扫描”,立即处理,重启电脑!

7。再不行,试试:金山网盾,一键修复!

8。实在不行,只能:一键还原(方法:访问我的“百度空间”博客)或重装系统!来自:求助得到的回答
参考技术A 注册表解禁.

无法将数据写入传输连接:现有连接被远程主机强行关闭

【中文标题】无法将数据写入传输连接:现有连接被远程主机强行关闭【英文标题】:Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host 【发布时间】:2011-04-08 10:24:59 【问题描述】:

我有一个更新服务器,它通过 TCP 端口 12000 发送客户端更新。单个文件的发送仅在第一次成功,但之后我在服务器上收到错误消息“无法将数据写入传输连接: 现有连接被远程主机强行关闭”。如果我在服务器上重新启动更新服务,它只会再次工作一次。我有正常的多线程 Windows 服务。

服务器代码

namespace WSTSAU

    public partial class ApplicationUpdater : ServiceBase
    
        private Logger logger = LogManager.GetCurrentClassLogger();
        private int _listeningPort;
        private int _ApplicationReceivingPort;
        private string _setupFilename;
        private string _startupPath;
        public ApplicationUpdater()
        
            InitializeComponent();
        

        protected override void OnStart(string[] args)
        
            init();
            logger.Info("after init");
            Thread ListnerThread = new Thread(new ThreadStart(StartListener));
            ListnerThread.IsBackground = true;
            ListnerThread.Start();
            logger.Info("after thread start");
        

        private void init()
        
            _listeningPort = Convert.ToInt16(ConfigurationSettings.AppSettings["ListeningPort"]);
            _setupFilename = ConfigurationSettings.AppSettings["SetupFilename"];
            _startupPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Substring(6);
        

        private void StartListener()
        
            try
            
                logger.Info("Listening Started");
                ThreadPool.SetMinThreads(50, 50);
                TcpListener listener = new TcpListener(_listeningPort);
                listener.Start();
                while (true)
                
                    TcpClient c = listener.AcceptTcpClient();
                    ThreadPool.QueueUserWorkItem(ProcessReceivedMessage, c);
                
            
            catch (Exception ex)
            
                logger.Error(ex.Message);
            
        

        void ProcessReceivedMessage(object c)
        
            try
            
                TcpClient tcpClient = c as TcpClient;
                NetworkStream Networkstream = tcpClient.GetStream();
                byte[] _data = new byte[1024];
                int _bytesRead = 0;

                _bytesRead = Networkstream.Read(_data, 0, _data.Length);

                MessageContainer messageContainer = new MessageContainer();
                messageContainer = SerializationManager.XmlFormatterByteArrayToObject(_data, messageContainer) as MessageContainer;

                switch (messageContainer.messageType)
                
                    case MessageType.ApplicationUpdateMessage:
                        ApplicationUpdateMessage appUpdateMessage = new ApplicationUpdateMessage();
                        appUpdateMessage = SerializationManager.XmlFormatterByteArrayToObject(messageContainer.messageContnet, appUpdateMessage) as ApplicationUpdateMessage;
                        Func<ApplicationUpdateMessage, bool> HandleUpdateRequestMethod = HandleUpdateRequest;
                        IAsyncResult cookie = HandleUpdateRequestMethod.BeginInvoke(appUpdateMessage, null, null);
                        bool WorkerThread = HandleUpdateRequestMethod.EndInvoke(cookie);
                        break;
                
            
            catch (Exception ex)
            
                logger.Error(ex.Message);
            
        


        private bool HandleUpdateRequest(ApplicationUpdateMessage appUpdateMessage)
        
            try
            
                TcpClient tcpClient = new TcpClient();
                NetworkStream networkStream;
                FileStream fileStream = null;

                tcpClient.Connect(appUpdateMessage.receiverIpAddress, appUpdateMessage.receiverPortNumber);
                networkStream = tcpClient.GetStream();

                fileStream = new FileStream(_startupPath + "\\" + _setupFilename, FileMode.Open, FileAccess.Read);

                FileInfo fi = new FileInfo(_startupPath + "\\" + _setupFilename);

                BinaryReader binFile = new BinaryReader(fileStream);

                FileUpdateMessage fileUpdateMessage = new FileUpdateMessage();
                fileUpdateMessage.fileName = fi.Name;
                fileUpdateMessage.fileSize = fi.Length;

                MessageContainer messageContainer = new MessageContainer();
                messageContainer.messageType = MessageType.FileProperties;
                messageContainer.messageContnet = SerializationManager.XmlFormatterObjectToByteArray(fileUpdateMessage);

                byte[] messageByte = SerializationManager.XmlFormatterObjectToByteArray(messageContainer);

                networkStream.Write(messageByte, 0, messageByte.Length);

                int bytesSize = 0;
                byte[] downBuffer = new byte[2048];

                while ((bytesSize = fileStream.Read(downBuffer, 0, downBuffer.Length)) > 0)
                
                    networkStream.Write(downBuffer, 0, bytesSize);
                

                fileStream.Close();
                tcpClient.Close();
                networkStream.Close();

                return true;
            
            catch (Exception ex)
            
                logger.Info(ex.Message);
                return false;
            
            finally
            
            
        


        protected override void OnStop()
        
        
    

我必须注意我的 Windows 服务(服务器)是多线程的。

【问题讨论】:

您是否使用TcpListener (msdn.microsoft.com/en-us/library/…) 来侦听传入连接,然后将这些连接分配给单独的线程? 是的,这正是我正在做的,我在我的原始帖子中发布了我的完整代码,谢谢你的帮助 您的客户端程序是为它发送的每个更新打开一个新的 TCP 连接还是尝试重新使用前一个?您的客户端程序是否绑定到特定的本地端口? 【参考方案1】:

在接收端,设置一个while循环来监听,直到没有更多数据,然后优雅地退出:关闭流和客户端。框架 TCP 库认为在线程退出时断开连接是一个问题,因此会抛出您看到的异常。

这也将使您免于纠正当前问题后可能会遇到的间歇性问题:带有长度说明符的 Stream.Read 并不总是每次都为您提供完整的缓冲区。看起来您正在发送(最多)2kb 块并接收到(单次)1kb 缓冲区,因此您也可能开始收到 XML 异常。

如果这还不够详细,请询问,我会挖掘一些旧的 TcpClient 代码。

【讨论】:

以上是关于FTP登陆 出现] 连接被关闭;传输已放弃的主要内容,如果未能解决你的问题,请参考以下文章

ftp能够登陆,但是传输总是提示连接超时

华为交换机ftp连接拒绝

FTP连接出现530 not logged in 是啥意思

ftp如何从网页登陆?

如何开启ftp服务

远程登陆最小化或关闭 模拟键盘操作失效