FTP文件下载不能及时更新
- 格式:doc
- 大小:66.00 KB
- 文档页数:2
FTP下载的常见错误及解决办法大家不要一连不上就大声嚷嚷:“不能下载!不能下载!”。
要知道很多时候是有错误而并非不能下载,只要能了解错在哪并改正错误其实是可以下载的。
下面就具体说说各种错误及解决办法:421错误(Too many users,please try again later)原因:同时连接该ftp的人数过多,一般ftp网站都有同时登陆人数的上限,超过该上限就会出现421错误。
解决办法:在ftp软件中,把重试次数改为999,重试间隔改为30秒以上,一般几分钟后就会连上,要注意的是,有些网站有连接时间的设定,连上后,超过一定时间不下载,就会自动断开,所以要经常去看看有没有连上。
530“not login"原因:用户名或密码错误,有些网站每隔一段时间就要修改密码,导致原来的密码无法登陆。
解决方法:获得正确的密码,然后登陆。
“连接超时,无法连接”错误原因:该ftp暂时关机,特别是一些个人ftp容易出现该错误。
解决方法:过一段时间再试。
网站FTP的开机时间一般在9点到23点之间;个人FTP的开机时间则不一定。
“无法解析域名”原因1:该ftp的域名输入错误,如漏打一个字母,使用了全角标点等。
解决方法:输入正确的域名。
原因2:本地的域名解析服务器坏了(长城宽带等fttb容易出现)解决方法:等本地网络修好即可使用,也可以直接输入ftp的ip地址。
原因3:该ftp修改了域名。
原因4:个人的ftp设置错误。
解决方法:通知开站的朋友修正。
“only one …… ip address……”原因1:使用多线程下载,超过该ftp允许的线程。
解决方法:看看自己是不是已经与该ftp有了连接,如果有了就不要再开新的连接。
如果没用看原因2。
原因2:局域网内有其他人连接了该ftp(长城宽带等fttb容易出现)解决方法:等几个小时,别人断开后,再连接该ftp。
“连接拒绝”原因:恭喜你,你的ip已经被该ftp封了。
文件写入服务器时未及时生成文件的原因问题并提供解决方案。
在现代信息时代,服务器的数据存储和文件管理是一个非常重要的环节,但有时候在将文件写入到服务器中时,会出现文件未及时生成的情况,这种情况相信让很多人感到十分困惑和苦恼。
本文将以文件未及时生成的原因为主题,来分析存在此类问题的原因,并提供解决方案。
一、文件写入服务器的过程在深入分析原因之前,我们需要先了解文件写入服务器的过程。
在通常情况下,人们通过Web 界面或命令行将文件从本地计算机上传到服务器。
在上传文件时,服务器接收到请求并开始接受文件的数据。
一旦文件数据被成功传输到服务器,服务器的存储系统就会将数据持久化,然后生成相应的文件并放置到存储设备的某个位置。
二、文件未及时生成的原因在服务器的文件写入过程中,如果文件未及时生成,主要原因可能是以下几个方面:1. 系统负载过高当服务器负载过高时可能会导致文件未及时生成。
在负载过高的情况下,服务器会优先处理一些紧急的事情,如代码的编译、程序的启动等,而将文件写入存储设备的任务排到后面。
这样就会导致服务器在一段时间内没有生成该文件。
2. 存储设备故障存储设备的硬件损坏、故障或者设备的容量已满,都可能会导致服务器文件未及时生成。
例如,硬盘可能出现坏道或者读取时间过长,这将导致服务器不能够及时访问数据,并将数据写入存储设备。
如果存储设备还有可用空间的话,则可以尝试重新写入该文件,如果设备容量已满,则需要添加更多的存储设备。
3. 文件系统错误在写入文件时,如果文件系统出现了错误,可能会导致文件未及时生成。
文件系统可能会出现磁盘碎片、索引错误或其他文件系统错误。
这些错误将导致服务器无法定位要写入的位置,或者写入的数据与运行已有程序的存储冲突,从而导致文件未及时生成。
4. 网络延迟在文件上传时,网络延迟也可能会导致文件未及时生成。
如果网络传输速度较慢,可能会导致服务器接收到数据的速度变慢,服务器会在等待数据的过程中暂时停止处理,从而导致文件未及时生成。
FTP下载上传文件可续传操作1.连接
双击filezilla.exe,输入连接
2.下载文件
2.1. 左侧选择下载至的位置;右侧选择要下载的文件,右击,选择“下载”
可查看下载进度
2.2. 断网后,显示在失败列表内
选中要续传的项目,右击选择“重置并将所有文件重新加入队列”
此时会列入【列队的文件】栏中
2.3. 网络重新连上后,选中要续传的项目,右击选择“处理队列”
会弹框提示目标文件已存在。
选择“续传”
点击确定后,会进行续传动作
3.上传文件
3.1 右侧选择下上传至的位置;左侧选择要上传的文件,右击,选择“上传”(或右击选择“添加文件到队列”,再至)
可查看上传进度
3.2. 断网后,显示在失败列表内
选中要续传的项目,右击选择“重置并将所有文件重新加入队列”
此时会列入【列队的文件】栏中
3.3. 网络重新连上后,选中要续传的项目,右击选择“处理队列”
会弹框提示目标文件已存在。
选择“续传”
点击确定后,会进行续传动作
上传成功。
FTP常见错误解决办法及详细错误列表首先,出现错误不要急于重试,重试也没用处,只会让网站封你的ip地址。
要根据提示,找出原因,选择正确的方法,解决问题。
其次,确认网络可以使用,如果本身连不上internet,一切免谈。
421错误原因:同时连接该ftp的人数过多,一般ftp网站都有同时登陆人数的上限,超过该上限就会出现421错误。
解决办法:在ftp软件中,把重试次数改为999,重试间隔改为60秒,一般几分钟到半小时就会连上,要注意的是,有些网站有连接时间的设定,连上后,超过一定时间不下载,就会自动断开,所以要经常去看看有没有连上。
530“not login"原因:用户名或密码错误,有些网站每隔一段时间就要修改密码,导致原来的密码无法登陆。
解决方法:去发布该ftp密码的论坛,或该ftp登陆时的欢迎词中,获得正确的密码,然后登陆。
“连接超时,无法连接”错误原因1:该ftp暂时关机,特别是一些个人ftp容易出现该错误。
解决方法:去发布该ftp论坛找开机时间,在开机时间范围内连接。
如果未标明时间,则等几个小时或几天后再连接该ftp,也可以参照421错误的解决方法。
原因2:ftp永远关闭解决方法:无药可救,找其他ftp吧。
“无法解析域名”原因1:该ftp的域名输入错误,如漏打一个字母,使用了全角标点等。
解决方法:去发布该ftp论坛找到正确的域名输入。
原因2:本地的域名解析服务器坏了(长城宽带等fttb容易出现)解决方法:等本地网络修好即可使用,也可以直接输入ftp的ip地址。
原因3:该ftp修改了域名。
解决方法:去发布该ftp论坛找正确的域名。
原因4:个人的ftp设置错误。
解决方法:通知开站的朋友修正。
原因5:ftp永远关闭解决方法:无药可救,找其他ftp吧。
“only one ……ip address……”原因1:使用多线程下载,超过该ftp允许的线程。
解决方法:看看自己是不是已经与该ftp有了连接,如果有了就不要再开新的连接。
FTP下载速率慢问题的常见原因以及解决方法TCP参数简述:在TCP/IP协议及用户常用桌面系统微软TCP/IP实现中,比较重要的参数如下:●MTU─The Maximum Transfer Unit●MSS─Maximum Segment Size●TCP1323Opts─RFC1323TCPoptions:window scaling & timestamp●MaxDupAcks─Maximum duplicate acknowlEGPRSments●Sack─Selective AcknowlEGPRSment(TCP选择性确认(RFC2018))●TCPWindowSize─TCP Window Size下面对上述参数进行简单的解释:1)MTU─The Maximum Transfer Unit该参数决定网络接口的默认最大传输单位(MTU)。
MTU是基础网络上传输的最大数据包大小(字节)。
它包括传输报头。
当数值大于基础网络的默认值时,传输就会使用网络默认MTU。
数值小于88时,传输就会将MTU设为88。
在以太网中,MTU=1500Bytes。
备注:Windows系统TCP/IP默认情况下使用PMTU(路径最大传输单位发现)检测,并查询驱动程序以查找本地MTU大小。
通常并不需要更改MTU参数2)MSS─Maximum Segment SizeMSS就是TCP数据包每次能够传输的最大数据分段。
为了达到最佳的传输效率,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes,所以MSS为1460。
通讯双方会根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。
3)TCP1323Opts─RFC1323TCPoptions:windows caling & timestamp该参数控制RFC1323时间戳与窗口缩放选项。
FTP服务器的安全性漏洞分析与修复FTP(文件传输协议)服务器是一种常用的远程文件传输方案,使用于各种网络环境和应用场景。
然而,由于FTP服务器的开放性和传统设计,存在一些潜在的安全性漏洞,可能会被不法分子利用来进行非法访问、数据泄露等恶意行为。
本文将分析FTP服务器的安全性漏洞,并提供一些修复措施,以帮助管理员提高FTP服务器的安全性防护。
一、FTP服务器的安全性漏洞分析1. 弱密码攻击弱密码是FTP服务器最常见的安全问题之一。
用户往往使用过于简单的密码,容易被密码破解工具破解。
恶意攻击者可以通过暴力破解、字典攻击等手法获取FTP账户信息进而访问服务器。
2. 匿名访问漏洞某些情况下,FTP服务器可能启用了匿名访问权限,允许未经身份验证的用户访问服务器。
这为攻击者提供了便利,可能导致恶意上传或下载文件等安全问题。
3. 数据嗅探FTP是明文传输协议,传输的数据包含在未加密的数据流中,因此容易被嗅探软件截获并获取敏感信息。
例如,用户登录FTP服务器时,用户名和密码可能被窃取,造成账户被盗。
4. 拒绝服务攻击恶意攻击者可以通过发送大量无效的连接请求、占满服务器资源等方式,使FTP服务器无法正常工作,造成拒绝服务的情况。
二、FTP服务器的安全性修复措施1. 强密码策略管理员需要强制要求FTP用户设置复杂度高的密码。
密码应包含大小写字母、数字和特殊字符,并且要求密码长度不少于8个字符。
此外,还应定期更改密码,避免长时间使用同一密码。
2. 关闭匿名访问权限管理员应该禁止FTP服务器上的匿名访问权限,并限制只有经过身份验证的用户才能访问服务器。
这样可以有效减少未经授权的用户访问服务器的风险。
3. 加密传输为了保护数据传输时的安全性,可以考虑使用SSL或TLS等加密协议来加密FTP传输通道。
这样可以防止数据被嗅探软件截获,确保数据的机密性和完整性。
4. 使用IP过滤通过配置FTP服务器的访问控制列表(ACL),可以设置只允许特定的IP地址或IP地址段进行连接。
WIN10文件夹不自动刷新解决方案在Windows 10中,有时我们可能会遇到文件夹不自动刷新的问题。
这意味着当我们在文件夹中进行了一些操作(如新建、删除或重命名文件),文件夹中的内容没有立即更新,需要手动刷新才能显示最新的文件。
这个问题可能会导致一定的困扰,特别是在频繁操作文件的情况下。
下面将介绍一些解决方案,帮助您解决WIN10文件夹不自动刷新的问题。
解决方案一:设置文件夹选项1.打开文件资源管理器,进入要自动刷新的文件夹。
2.在顶部菜单栏中点击“查看”,然后在“布局”组选项中选择“细节”。
3.再次点击顶部菜单栏中的“查看”,然后在“当前视图”组选项中选择“选项”。
4.在打开的文件夹选项对话框中,点击“查看”选项卡。
5.在“高级设置”下,找到“在文件夹中打开一个项目时自动刷新”选项,并确保其处于启用状态。
6.单击“确定”保存更改。
解决方案二:重置文件资源管理器1. 打开任务管理器,可以通过使用“Ctrl + Shift + Esc”快捷键来打开。
2.在任务管理器中,切换到“进程”选项卡。
3.找到“资源管理器”进程,右键点击它,然后选择“结束任务”。
这会关闭文件资源管理器窗口。
4.在任务管理器的顶部菜单栏中,点击“文件”,然后选择“新建任务”。
5. 在打开的对话框中,输入“explorer.exe”,然后点击“确定”。
这将重新启动文件资源管理器。
6.尝试在文件夹中进行一些操作,看看是否可以自动刷新。
解决方案三:修改注册表1. 按下“Win + R”快捷键打开“运行”对话框。
3. 导航到以下路径:HKEY_CLASSES_ROOTCLSID{BDEADE7F-C265-11D0-BCED-00A0C90AB50F}Instance4. 右键点击“Instance”文件夹,然后选择“删除”。
6.尝试在文件夹中进行一些操作,看看是否可以自动刷新。
解决方案四:使用第三方软件如果以上解决方案都无法解决问题,您可以考虑使用一些第三方软件来解决WIN10文件夹不自动刷新的问题。
FTP下载速率慢问题的常见原因以及解决方法TCP参数简述:在TCP/IP协议及用户常用桌面系统微软TCP/IP实现中,比较重要的参数如下:●MTU─The Maximum Transfer Unit●MSS─Maximum Segment Size●TCP1323Opts─RFC1323TCPoptions:window scaling & timestamp●MaxDupAcks─Maximum duplicate acknowlEGPRSments●Sack─Selective AcknowlEGPRSment(TCP选择性确认(RFC2018))●TCPWindowSize─TCP Window Size下面对上述参数进行简单的解释:1)MTU─The Maximum Transfer Unit该参数决定网络接口的默认最大传输单位(MTU)。
MTU是基础网络上传输的最大数据包大小(字节)。
它包括传输报头。
当数值大于基础网络的默认值时,传输就会使用网络默认MTU。
数值小于88时,传输就会将MTU设为88。
在以太网中,MTU=1500Bytes。
备注:Windows系统TCP/IP默认情况下使用PMTU(路径最大传输单位发现)检测,并查询驱动程序以查找本地MTU大小。
通常并不需要更改MTU参数2)MSS─Maximum Segment SizeMSS就是TCP数据包每次能够传输的最大数据分段。
为了达到最佳的传输效率,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes,所以MSS为1460。
通讯双方会根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。
3)TCP1323Opts─RFC1323TCPoptions:windows caling & timestamp该参数控制RFC1323时间戳与窗口缩放选项。
Ftp连接常见问题Ftp 是管理维护网站资料的重要手段,经常有一些客户提出Ftp上传的疑问.现在总结常见错误和解决方案如下(以FlashFxp为例)1. Ftp服务器连接失败,分为以下四种情况。
a).连接被拒, 错误信息如下:[右] 正在连接到 -> DNS= IP=218.13.164.102 PORT=21[右] 连接失败(连接被拒)原因:这是因为客户在作Ftp上传时填写错了Ftp服务器造成这个问题.解决:在Ftp上传时记得一定要使用我司的Ftp服务器(例如:等)b).FTP用户登入失败错误信息如下:[右] 正在连接到 -> DNS= IP=211.155.224.184 PORT=21 [右] 已连接到 (Ftp服务器连接成功)[右] 220 Serv-U FTP Server v6.2 for WinSock ready...[右] USER test[右] 331 User name okay, need password.[右] PASS (隐藏)[右] 530 Not logged in.原因:这是用户填写错误的FTP服务器、Ftp用户名/或Ftp密码解决:请您核对您的Ftp 信息(开通空间时,系统会把FTP信息发到你邮箱里,你可以查看一下邮件)。
如果您忘记Ftp密码。
可以在“用户中心---虚拟主机管理---控制面板”里重设Ftp 密码。
c).用户本地上网问题,错误信息如下(下面以这台服务器为例):无法解析主机:C:\>ping Ping request could not find host .please check the name and try again.原因:如这两种情况同时都出现,那是用户本地上网的DNS有问题。
解决:请用其它的DNS试下。
d).Ftp服务器解析正常,Ftp服务器连接超时,错误信息如下(下面以这台服务器为例):[右] 正在连接到 -> DNS= IP=203.171.239.16 PORT=21 [右] 连接失败(连接超时)你在命令行窗口做一下ping Ftp服务器测试一下. 看结果如果出现超时RequestTimedOut C:\>ping C:\>ping Pinging [203.171.239.16] with 32 bytes of data:Request timed out.Request timed out.Request timed out.Request timed out.原因:如果Ftp服务器解析到了IP地址, 但Ftp无法连接,同时出现这两种情况,那就说明是网络方面有问题。
路由器升级文件下载失败请检查网络后重试怎么回事路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,给大家整理了在使用TPLINK云路由器的时候提示“升级文件下载失败,请检查网络后重试”的诊断和解决办法。
问题介绍在部分云路由器的管理界面>软件升级中点击“在线升级到最新版本”,软件无法下载失败,提示“升级文件下载失败,请检查网络后重试”注意:路由器作为交换机(无线AP)使用时,在线升级功能无法使用。
解决方法出现该问题与宽带线路有关,可能会导致部分路由器下载升级软件失败。
解决方法:查看路由器的型号和硬件版本,在我司官方网站的下载中心,下载对应的升级软件。
使用电脑WEB浏览器登录路由器管理界面,在软件升级->本地升级中,浏览找到解压后的升级软件,点击软件升级,等待升级成功即可。
相关阅读:路由器安全特性关键点由于路由器是网络中比较关键的设备,针对网络存在的各种安全隐患,路由器必须具有如下的安全特性:(1)可靠性与线路安全可靠性要求是针对故障恢复和负载能力而提出来的。
对于路由器来说,可靠性主要体现在接口故障和网络流量增大两种情况下,为此,备份是路由器不可或缺的手段之一。
当主接口出现故障时,备份接口自动投入工作,保证网络的正常运行。
当网络流量增大时,备份接口又可承当负载分担的任务。
(2)身份认证路由器中的身份认证主要包括访问路由器时的身份认证、对端路由器的身份认证和路由信息的身份认证。
(3)访问控制对于路由器的访问控制,需要进行口令的分级保护。
有基于IP地址的访问控制和基于用户的访问控制。
(4)信息隐藏与对端通信时,不一定需要用真实身份进行通信。
通过地址转换,可以做到隐藏网内地址,只以公共地址的方式访问外部网络。
除了由内部网络首先发起的连接,网外用户不能通过地址转换直接访问网内资源。
(5)数据加密为了避免因为数据窃听而造成的信息泄漏,有必要对所传输的信息进行加密,只有与之通信的对端才能对此密文进行解密。
解决网络无法更新软件的方法在现代社会中,计算机软件扮演着至关重要的角色。
然而,有时候我们可能会遇到网络无法更新软件的问题。
这不仅会影响工作效率,还可能导致软件运行出错。
因此,解决网络无法更新软件的方法变得至关重要。
本文将向您介绍几种常用的方法,帮助您解决这个问题。
1. 检查网络连接首先,确保您的网络连接正常。
要做到这一点,可以尝试以下步骤: - 检查您的网络连接是否已启用,并确保您的计算机已连接到可用的网络。
- 检查网络连接是否稳定,可以尝试重新启动您的路由器或调制解调器。
- 如果您使用的是Wi-Fi连接,尝试切换到有线连接,以查看是否能够解决问题。
2. 检查防火墙设置防火墙是保护计算机安全的重要组成部分,但有时也会阻止软件更新。
您可以尝试以下步骤来检查和修改防火墙设置:- 检查您的防火墙设置,确保它没有阻止软件更新。
您可以在计算机的控制面板或安全设置中找到相关选项。
- 如果发现防火墙设置有误,您可以试着禁用防火墙来更新软件。
请注意,在完成更新后,务必重新启用防火墙以保护您的计算机。
3. 检查杀毒软件设置杀毒软件是保护计算机免受恶意软件攻击的重要工具。
但有时候,它可能会误将正常软件更新标记为潜在风险。
您可以执行以下步骤来检查和修改杀毒软件设置:- 检查您的杀毒软件设置,确保它没有阻止软件更新。
在杀毒软件的选项或设置中,您可以找到有关软件更新或白名单的选项。
- 如果您确定软件更新来自可信的来源,您可以将其添加到杀毒软件的白名单中,以允许更新操作。
4. 使用代理服务器有时候,您可能需要使用代理服务器来解决网络无法更新软件的问题。
代理服务器可以帮助您绕过某些网络限制或提供更稳定的连接。
您可以按照以下步骤配置代理服务器:- 找到适合您需求的可靠代理服务器,并按照其提供的配置说明进行设置。
- 打开您的软件更新设置,输入代理服务器的详细信息,并保存设置。
- 尝试进行软件更新,看看是否成功连接到服务器并完成更新。
FTP下载速率慢问题的常见原因以及解决方法TCP参数简述:在TCP/IP协议及用户常用桌面系统微软TCP/IP实现中,比较重要的参数如下: MTU─The Maximum Transfer UnitMSS─Maximum Segment SizeTCP1323Opts─RFC1323TCPoptions:window scaling & timestampMaxDupAcks─Maximum duplicate acknowlEGPRSmentsSack─Selective AcknowlEGPRSment(TCP选择性确认(RFC2018))TCPWindowSize─TCP Window Size下面对上述参数进行简单的解释:1)MTU─The Maximum Transfer Unit该参数决定网络接口的默认最大传输单位(MTU)。
MTU是基础网络上传输的最大数据包大小(字节)。
它包括传输报头。
当数值大于基础网络的默认值时,传输就会使用网络默认MTU。
数值小于88时,传输就会将MTU设为88。
在以太网中,MTU=1500Bytes。
备注:Windows系统TCP/IP默认情况下使用PMTU(路径最大传输单位发现)检测,并查询驱动程序以查找本地MTU大小。
通常并不需要更改MTU参数2)MSS─Maximum Segment SizeMSS就是TCP数据包每次能够传输的最大数据分段。
为了达到最佳的传输效率,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes,所以MSS为1460。
通讯双方会根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。
3)TCP1323Opts─RFC1323TCPoptions:windows caling & timestamp该参数控制RFC1323时间戳与窗口缩放选项。
从FTP的服务上下载txt⽂件,下载不了的问题 近期有个项⽬,要从ftp上下载txt⽂件下来,因为txt⽂件有我这边项⽬所需要的报告,但是我在本机上运⾏却能从客户的ftp上能拉取下来(我的电脑为WIN10),但是到了线上的环境却下了。
开始的时候,我是觉得路径的问题,然后把取的路径更改为 strFtpDirTmp += _T("\\*.txt");也就是如下的代码,最后在本机(WIN10)上能拉到ftp服务器的txt⽂件,但是到了线上的环境却不⾏了。
实现下载的代码如下(单独开了个线程来下载): static THREAD_RETURN __STDCALL ThreadGetRptFromFtp(void *arglist) { CZzxFxImpl* pThis = (CZzxFxImpl*)arglist; if (NULL == pThis) { return (THREAD_RETURN)0; } CAdapter::InterlockedIncrement(&pThis->m_getFtpRptThreadCnt); pThis->m_getRptThreadExitFlag = false; pThis->g_pInetSession = NULL; //会话对象 pThis->g_pFtpConnection = NULL; //连接对象 //新建对话 pThis->g_pInetSession = new CInternetSession(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS); try { //新建连接对象 pThis->g_pFtpConnection = pThis->g_pInetSession->GetFtpConnection(pThis->m_FtpAddr.c_str(), pThis->m_FtpUid.c_str(), pThis->m_FtpPwd.c_str()); } catch (CInternetException *pEx) { TCHAR szError[1024]; CString strError = ""; if (pEx->GetErrorMessage(szError, 1024)) { string strLogInfo = cstr::format("连接FTP服务器失败,失败原因 %s", szError); CSmsTools::GetInstance().WriteLogMsg(strLogInfo.c_str(), strLogInfo.length(), CSmsTools::LOG_LEVEL_ERROR); } else { string strLogInfo = cstr::format("连接FTP服务器失败,失败原因:未知异常"); CSmsTools::GetInstance().WriteLogMsg(strLogInfo.c_str(), strLogInfo.length(), CSmsTools::LOG_LEVEL_ERROR); } pEx->Delete(); pThis->g_pFtpConnection = NULL; return 0; } try { memset(pThis->m_szLocalPath, 0x0, sizeof(pThis->m_szLocalPath)); CAdapter::GetCurrentPath(pThis->m_szLocalPath, MAX_PATH); strcat(pThis->m_szLocalPath, "LocalRptFile"); if (!CAdapter::PathFileExists(pThis->m_szLocalPath)) { CAdapter::CreateDirectory(pThis->m_szLocalPath, 0); } //创建会话成功 while (!pThis->m_getRptThreadExitFlag) { //设置远程服务端状态报告获取⽬录 BOOL bSetDir = pThis->g_pFtpConnection->SetCurrentDirectory(pThis->m_FtpRptDir.c_str()); CFtpFileFind RemoteFinder(pThis->g_pFtpConnection); //远程查找⽂件对象 // pRemoteFinder = new CFtpFileFind(g_pFtpConnection); CString strFtpDirTmp = pThis->m_FtpRptDir.c_str(); //strFtpDirTmp += "*"; strFtpDirTmp += _T("\\*.txt"); BOOL bFindFile = RemoteFinder.FindFile(strFtpDirTmp); //获取⽬录下所有的⽂件 //BOOL bFindFile = RemoteFinder.FindFile(_T("*")); //获取⽬录下所有的⽂件 int nFileCnt = 0; while (bFindFile) { bFindFile = RemoteFinder.FindNextFile(); nFileCnt++; CString strFile = RemoteFinder.GetFileName(); CString strLoaclFilePath = ""; strLoaclFilePath.Format("%s\\%s", pThis->m_szLocalPath, strFile); //下载到本地⽂件夹的全路径 CString strErrMsgTmp = ""; BOOL bGetRlt = pThis->g_pFtpConnection->GetFile(strFile, strLoaclFilePath, FALSE,FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY); //下载 if (bGetRlt) //下载成功 { BOOL bRemove = pThis->g_pFtpConnection->Remove(strFile); //删除 if (!bRemove) //删除失败 { string strLogInfo = cstr::format("⽂件:%s 删除失败,失败代码:%d", strFile, GetLastError()); CSmsTools::GetInstance().WriteLogMsg(strLogInfo.c_str(), strLogInfo.length(),CSmsTools::LOG_LEVEL_ERROR); break; } } else //下载失败 { string strLogInfo = cstr::format("⽂件:%s 下载失败,失败代码:%d", strFile, GetLastError()); CSmsTools::GetInstance().WriteLogMsg(strLogInfo.c_str(), strLogInfo.length(),CSmsTools::LOG_LEVEL_ERROR); continue; } //解析本地⽂件夹中状态报告⽂件 pThis->ParseLocalDirectoryRptFile(strLoaclFilePath); Sleep(100); } RemoteFinder.Close(); Sleep(1000 * 5); } } catch (...) //GetErrorMessage { string strLogInfo = cstr::format("下载异常"); CSmsTools::GetInstance().WriteLogMsg(strLogInfo.c_str(), strLogInfo.length(), CSmsTools::LOG_LEVEL_ERROR); } CAdapter::InterlockedDecrement(&pThis->m_getFtpRptThreadCnt); return 0; } 最后到了线上再执⾏,还是从客户的FTP服务器上拉取不了txt⽂件下来,那就是把 strFtpDirTmp += "*"; 改成 strFtpDirTmp +=_T("\\*.txt"); 是⽆效的了。
版本升级方
2、串口方式升级
将IAD wan口和电脑网口通过网线接到HUB或交换机上,电脑分配IP:192.168.0.X(比如192.168.0.3)然后按照如下操作。
串口一头接电脑上,一头接到网关CONSOLE口上
1、打开超级终端开始---所有程序----附件-----通信------超级终端
1、首先运行wftpd32.exe。
在Security菜单下选择User/Rights Security Dialog,
1、在弹出的对话框空选择“New User:
2、在“New User”对话框中填User Name:target。
点“OK”。
3、在弹出的“change password"对话框中填密码:target.点“OK”。
5、然后在“User/Rights Security Dialog”对话框下的“Home Directory”中填入版本在电脑中的安放目录,(如放在E盘cos文件夹下,则输入E:\COS)最后选择右上角的“Done”
注意:到此ftp服务器设置完成。
点最小化之后就不用管了,记住一定不要点关闭。
6、在IAD通电检测的时候,观察超级终端显示,“(press d key to stop system boot/load)”
设备上电后,在超级终端窗口中按键盘字母“D”键,到提示是否下载新的软件后,输入Y确认。
ftp server IP :输运行了WFTP软件电脑的IP,(注:由于此时设备没有完全启动运行,此IP一定要为192.168.0.X网段)
file name: 输入版本文件名
如下图为正常。
Csharp使用FTP实现客户端程序自动更新C#使用FTP实现客户端程序自动更新最近做的一个项目中需要用到客户端自动更新功能,最初的想法是利用ClickOnce技术来完成,但在实践中发现根本行不能,原因如下:1)项目应用到了DevExpress控件包,用ClickOnce发布的自动更新程序,客户在安装时报在GAC中找不到控件dll的错。
2)ClickOnce安装无法实现根据用户安装时录入的参数(比如数据库服务器名、数据库用户名和密码等)来动态修改配置文件的功能。
3)最后一下其实不重要了,就是ClickOnce无法实现用户自定义安装文件夹。
最后决定放弃使用ClickOnce,使用ftp方式进行,实现思路如下:用户启动程序时,先运行update.exe,该文件会自动比较本地配置文件和ftp服务器上配置文件的异同,会自动下载上次更新后变化的文件以及新加入的文件。
(因为都是基本配置文件,所以开发了一个配置文件生成工具,用户只需要选择根目录后,就会自动生成配置文件。
)文件下载结束后,再启动实际的客户端程序。
1using System;2using System.Collections.Generic; 3using System.Diagnostics;4using System.IO;5using ;6using System.Threading;7using System.Windows.Forms;89namespace Update10{11 /**//// <summary>12 /// Description:13 /// Author: ZhangRongHua14 /// Create DateTime: 2009-6-21 12:25 15 /// UpdateHistory:16 /// </summary>17 public partial class frmUpdate : Form 18 {19 Fields#region Fields2021 private const string CONFIGFILE = "update.xml";22 private const string UPDATEDIR = "PMS"; 23 private string appPath = Application.StartupPath;24 private List<ErrorInfo> errorList = new List<ErrorInfo>();25 private string locFile = String.Concat(Application.StartupPath, "\\", CONFIGFILE);26 private string tmpUpdateFile = "TmpUpdate.xml"; 27 privateList<string> updateList;28 private string updateTmpPath = string.Concat(Path.GetTempPath(), "\\",UPDATEDIR);29 private string url = String.Empty; 3031 private FTP ftp = null;3233 #endregion3435 Delegates#region Delegates3637 public delegate void AsycDownLoadFile(string srcFile, string destFile, int i);3839 public delegate void ExecuteUpdateFiles(string srcPath, string destPath);4041 public delegate void UpdateComplete(); 4243 public delegate void UpdateUI(int i, string message); 4445 #endregion4647 public event UpdateComplete OnUpdateComplete; 4849 Constructor#region Constructor5051 public frmUpdate()52 {53 InitializeComponent();54 OnUpdateComplete += newUpdateComplete(frmUpdate_OnUpdateComplete);55 }5657 #endregion5859 Event Handler#region Event Handler 6061 private void frmUpdate_Load(object sender, EventArgs e) 62 {63 if(Directory.Exists(updateTmpPath)) 64 {65 Directory.Delete(updateTmpPath, true); 66 }6768 // 如果有主程序启动,则关闭69 Process[] ps = Process.GetProcesses(); 70 foreach (Process p in ps)71 {72 //MessageBox.Show(p.ProcessName); 73 if (p.ProcessName.ToLower() == "wat.pms.winform")74 {75 p.Kill();76 break;77 }78 }7980 GetUpdateFiles();81 }8283 private void frmUpdate_OnUpdateComplete() 84 {85 ExecuteUpdateFiles dExecuteUpdateFiles = newExecuteUpdateFiles(ExecuteUpdate);86 Invoke(dExecuteUpdateFiles, new object[] {updateTmpPath, appPath});87 }8889 private void frmUpdate_Shown(object sender, EventArgs e)90 {91 Thread updateThread = new Thread(newThreadStart(DownLoadUpdateFiles));92 updateThread.SetApartmentState(ApartmentState.STA);93 updateThread.IsBackground = true; 94 Thread.Sleep(500);95 updateThread.Start();969798 }99100 #endregion101102 Private Methods#region Private Methods 103104 /**//// <summary>105 /// 将目标文件替换为本地文件106 /// <remark>107 /// Author:ZhangRongHua108 /// Create DateTime: 2009-6-21 10:28 109 /// Update History: 110 /// </remark>111 /// </summary>112 /// <param name="srcFile">The SRC file.</param> 113 /// <param name="destFile">The dest file.</param> 114 private voidDownLoadFile(string srcFile, string destFile)115 {116 if(ftp == null )117 {118 ftp = new FTP(Updater.URL, "", er, Updater.Password);119 }120121122123 if(!ftp.Connected)124 {125 MessageBox.Show("无法连接远程服务器,无法更新程序", "提示", MessageBoxButtons.OK, rmation); 126Process.Start(Updater.MainProgram); 127 Close();128129 }130131 // 得到服务器端的配置文件132 ftp.Get(srcFile, updateTmpPath, destFile); 133134135136 }137138 /**//// <summary>139 /// 得到需要更新的文件清单140 /// <remark>141 /// Author:ZhangRongHua142 /// Create DateTime: 2009-6-21 10:29 143 /// Update History: 144 /// </remark>145 /// </summary>146 private void GetUpdateFiles() 147 {148 Updater.GetBaseInfo(locFile); 149 url = Updater.URL;150 string svrFile = String.Concat(url, CONFIGFILE);151152 if (String.IsNullOrEmpty(svrFile)) 153 {154 BroadCastOnUpdateComplete();155 return;156 }157158 Directory.CreateDirectory(updateTmpPath); 159 try160 {161 DownLoadFile(CONFIGFILE, tmpUpdateFile); 162 }163 catch (Exception ex)164 {165 MessageBox.Show("无法连接远程服务器,无法更新程序", "提示",MessageBoxButtons.OK, rmation); 166Process.Start(Updater.MainProgram); 167 Close();168 }169170 updateList = Updater.GetUpdateFileList(locFile, tmpUpdateFile);171 if (updateList == null || updateList.Count < 1) 172 {173 BroadCastOnUpdateComplete(); 174 return;175 }176177 pbUpdate.Maximum = updateList.Count; 178 pbUpdate.Minimum = 0;179 lblInfo.Text = String.Concat(updateList.Count, "个文件需要更新!");180 lblInfo.BringToFront();181 lblState.BringToFront();182 lblInfo.Update();183184 pbUpdate.Maximum = updateList.Count; 185 pbUpdate.Minimum = 0;186187 for (int i = 0; i < updateList.Count; i++) 188 {189 string file = updateList;190 ListViewItem lvItem = new ListViewItem(); 191 lvItem.Text = file;192 lvItem.SubItems.Add(Updater.MainProgramVersion); 193lvUpdateList.Items.Add(lvItem); 194 }195 }196197 private void UpdateUIInfo(int i, string message) 198 { 199 pbUpdate.Value = i + 1;200 lblState.Text = message;201 lblState.Update();202 }203204 private void BroadCastOnUpdateComplete() 205 {206 if (OnUpdateComplete != null)207 {208 OnUpdateComplete();209 }210 }211212 private void DownLoadUpdateFiles()213 {214 if (updateList == null || updateList.Count < 1) 215 { 216 BroadCastOnUpdateComplete();217 return;218 }219220 try221 {222 UpdateUI dUpdateUI = new UpdateUI(UpdateUIInfo); 223 AsycDownLoadFile dAsycDownLoadFile = new AsycDownLoadFile(DownLoadFile);224 for (int i = 0; i < updateList.Count; i++) 225 {226 string file = updateList;227 string destFile = String.Concat(updateTmpPath, "\\", file);228 string destFileName =destFile.Substring(stIndexOf("/") +1);229 string srcFile = String.Concat(url, file); 230 var srcFileName = file.Trim('/'); 231 destFile = destFile.Replace("/", "\\"); 232 Directory.CreateDirectory(destFile.Substring(0,stIndexOf("\\")));233 string curentFile = String.Concat("正在更新第", i + 1, "/",updateList.Count, "个", file);234235 Invoke(dAsycDownLoadFile, new object[] { srcFileName,srcFileName, i });236 Thread.Sleep(50);237 Invoke(dUpdateUI, new object[] {i, curentFile});238 }239 }240 catch (Exception ex)241 {242 Debug.WriteLine(ex.Message); 243 }244245 BroadCastOnUpdateComplete();246 }247248249250 private void CopyUpdateFiles(string srcPath, string destPath) 251 {252 string[] files = Directory.GetFiles(srcPath); 253 for (int i = 0;i < files.Length; i++) 254 {255 string srcFile = files;256 string destFile = string.Concat(destPath, "\\",Path.GetFileName(srcFile));257 try258 {259 File.Copy(srcFile, destFile, true); 260 }261 catch (System.IO.IOException ex) 262 {263264265 }266267 }268269 string[] dirs = Directory.GetDirectories(srcPath); 270 for (int i = 0; i < dirs.Length; i++) 271 {272 srcPath = dirs;273 string tmpDestPath = String.Concat(destPath, "\\",Path.GetFileName(srcPath));274 Directory.CreateDirectory(tmpDestPath); 275CopyUpdateFiles(srcPath, tmpDestPath); 276 }277 }278279280281 /**//// <summary>282 /// 更新完成后,要执行的动作(将下载的文件从临时目录复制到主目录,重启主程序)283 /// <remark>284 /// Author:ZhangRongHua285 /// Create DateTime: 2009-6-21 12:25 286 /// Update History: 287 /// </remark>288 /// </summary>289 /// <param name="srcPath">The SRC path.</param> 290 /// <param name="destPath">The dest path.</param> 291 private void ExecuteUpdate(string srcPath, string destPath)292 {293 if (errorList != null && errorList.Count < 1) 294 {295 lblInfo.Text = "正在执行更新";296 lblInfo.Update();297 CopyUpdateFiles(srcPath, destPath); 298 File.Copy(tmpUpdateFile, locFile, true); 299 }300 Process.Start(Updater.MainProgram); 301302 Close();303 }304305 private void DownLoadFile(string srcFile, string destFile, ListViewItem lvItem)306 {307 try308 {309 DownLoadFile(srcFile, destFile); 310 lvItem.SubItems.Add("Ok");311 }312 catch (Exception ex)313 {314 Debug.WriteLine(ex.Message); 315 lvItem.SubItems.Add("fail");316 ErrorInfo errorInfo = new ErrorInfo(); 317 errorInfo.File = srcFile;318 errorInfo.ErrorLevel = ErrorLevel.Serious; 319 errorInfo.Message = ex.Message; 320 errorList.Add(errorInfo);321 }322 }323324 private void DownLoadFile(string srcFile, string destFile, int i) 325 {326 ListViewItem lvItem = lvUpdateList.Items; 327328 lvUpdateList.Items.EnsureVisible(); 329 try330 {331 DownLoadFile(srcFile, destFile); 332 lvItem.SubItems.Add("Ok"); 333 }334 catch (Exception ex)335 {336 Debug.WriteLine(ex.Message); 337 lvItem.SubItems.Add("fail");338 ErrorInfo errorInfo = new ErrorInfo(); 339 errorInfo.File = srcFile; 340 errorInfo.ErrorLevel = ErrorLevel.Serious; 341 errorInfo.Message = ex.Message; 342 errorList.Add(errorInfo); 343 MessageBox.Show(destFile); 344 }345 }346347 #endregion348 }349}。
ftp刷新后文件大小变0字节的解决方法为了方便员工在局域网中交流、沟通,单位领导要求网络管理员尽快在内网中安装架设文件传输服务器,保证员工日后能够利用ftp功能上传、下载共享资源。
领到任务后,网络管理员丝毫不敢懈怠,加班加点,在最短的时间内,安装、调试好了FTP服务器;原以为可以交差了事了,谁曾想到,FTP服务器在正式“服役”的第一天,网络管理员就接二连三地收到员工的电话“投诉”,说在向文件服务器上传文件时明显不正常,例如容量不大的文件上传到服务器系统中后,经过简单刷新操作,目标文件的容量大小就变成了0字节;对于容量较大的文件来说,它们一旦被上传到服务器系统中后,再下载到客户端系统时就变得无法打开了,还有一些文件在上传成功后,它们的文件尺寸都比原来的要小一些。
文件传输出现这样的蹊跷问题,事关重大,网络管理员立即动手对文件上传故障进行排查。
故障排查过程由于FTP服务器安装、架设操作,是一项常规操作,网络管理员在平时的工作过程中,经常进行这样的操作,所以他认为F TP服务器的安装、配置操作应该不存在问题,之所以会出现上述不正常问题,很可能是员工客户端系统自身存在问题。
为了排除客户端系统自身因素,网络管理员特地在单位内网中任意选择了几台客户端系统进行文件上传测试操作,结果发现上述故障现象果然存在,特别是在上传文件尺寸比较小的共享资源时,故障现象更为明显,显然上传文件出错现象的的确确存在。
考虑到FTP服务器是安装、架设在Win dows Server 2003服务器系统中的,同时使用的是S erv-U专业工具,于是网络管理员打算从F TP软件、服务器系统、客户端系统三个方面,对上传文件出错故障现象进行依次排查。
FTP文件下载“不能及时更新”都是IE缓存的错
事件回放:学期末,信息技术课学生正在微机室进行在线考试。
”上面有答案,”下面有同学小声议论经,我看了一下,原来我在制作试卷时将答案与试题做成了一个文档,学生在下载试卷的同时,答案也就下载了。
我赶紧嘱咐学生自觉考试,同时将答案自觉删除。
幸好是第一个班,我赶紧登陆到学校FTP服务器上,将考试文档中答案删除。
每想到第二个班考试时,下载的考试文档还有答案。
我直接到FTP服务器上操作,发现确实已经删除了。
怎么加事?经过一番分析,原来都是IE缓存引起的。
关于IE缓存
为了提高访问网页的速度,Internet Explorer浏览器会采用累积式加速的方法,将你曾经访问的网页内容(包括图片以及cookie文件等)存放在电脑里。
这个存放空间,我们就称它为IE缓存。
以后我们每次访问网站时,IE会首先搜索这个目录,如果其中已经有访问过的内容,那IE就不必从网上下载,而直接从缓存中调出来,从而提高了访问网站的速度。
FTP默认工作方式也是通过IE打开,我们不难分析产生这种现象的原因:
从FTP服务器下载文档到本地或是直接打开文档,首先到IE缓存检查有没有同名的文件存在,如果有,就直接从IE缓存打开或下载。
如果没有,先下载到IE缓存,然后再从IE缓存下载到本地,当在FTP服务器上对文件内容修改时,只要文件名没改变时,即使内容变了或者文件大小变了,客户端先检查本地IE缓存,如果存在同名(不管大小或文件最后修改时间),就直接从本地IE缓存下载,当然还是原来那个文件了。
小秘密:关于文件在缓存中的位置。
在IE的“工具”菜单下选择“Internet选项”,然后在“常规”选项卡中你会看到有“Internet临时文件”这一项,单击“设置”按钮,然后在弹出的“设置”对话框中就可以看到IE缓存的位置,winxp与win7略有不同了。
这里有一个不能不说的秘密了。
我开始在实验中,在该缓存目录下没有发现任何我要下载的文档,通过WINDOWS的文件查找功能在该目录下也没有找到任何文档了,其实下载的文档应该还是从缓存COPY过来的,因为在FTP服务端已经更改了内容了。
后来查阅了相关资料才知道在系统提示的IE缓存目录下还有一个文件夹“\Content.IE5”,它即不是隐藏的也不是系统的,所以不通过手工输入,是无法进入的。
当进入到该目录下,你看到那些在"content.ie5"目录下以数字和字母命名的文件夹了么?这是微软试图通过使用复杂的文件名来使他的计划越发难以理解,这些数字和字母命名的文件夹就是微软生成的用来保存你的cookies和缓存的文件夹,如下图所示。
微软是如何做到我们无法通过文件查找功能来找到这些IE缓存文档的呢?.这个问题困扰了我很久,但是最终我还是在这些文件夹中找到了原因,原来在"content.ie5目录下有一个"desktop.ini"文件,这是一个文件夹中的标准文本文件,用来定制一类文件夹行为的某些特定的功能。
微软使用"desktop.ini"文件来使得这些文件不可见,使这些文件对于Windows ,"查找功能"都不可见.(这就是你为什么不能在这些文件夹中执行"查找"功能的原因了)
弥补措施:可以通过以下几种方法来解决
一、更改IE缓存更新的方式:IE缓存更新有四种方式,在“设置”对话框下面有四个单选项:
1、“每次访问此页时检查”:表示浏览器将发送一个信息给所要访问的页面的WEB服务器,查问当前访问的信息是否有变动,如没有变动,就从硬盘缓存中直接调用,而且每次访问都要发送信息给WEB服务器进行验证。
2、“每次启动INTERNETEXPLORER时检查”:表示本次上网浏览器将只发送一次信息给WEB服务器进行验证,以后无论信息是否发生变动,都从硬盘缓存中直接调用所要访问的页面的信息。
3:“自动”:表示浏览器将自动检查所要访问的信息最新是否发生变动,如果变动的话,就从INTERNET上重新下载网页,如果没有变动的话,就直接从硬盘中读取数据。
4、“不检查”:表示对要调用的页面信息不进行校验,只要硬盘硬盘上有,就直接从硬盘中调用。
弄清楚了上面四个选项后,用户可以根据自己的实际情况进行设定,浏览器默认选择“自动”这一单选项。
系统默认是第三个,根据我反复实验,其中只有第一项是在每次打开IE或点击刷新后即时更新。
而后三项都是根据只要相同的文件名存在,即直接在本地IE缓存下载了。
所以我们只要把缓存更新方式设置第一项即可。
二、更改FTP访问方式:FTP有以下两种方式
1、FTP本地视图:这是系统默认的方式,采用IE缓存更新机制,滞后现象严重,在缓存文件夹下,存着第一次访问的文档,当再次打开时比较文件名来决定从哪里下载或打开了。
2、FTP文件夹视图:同步更新,与FTP服务器同步。
它直接打开或下载服务器上的文档,但同时是会向IE缓存COPY一个备份了。
所以只要我们选择第2种方式,就不存在不即时更新的问题了。
打开方法:在“页面”选项下,打开“在WINDOWS资源管理器中打开FTP站点”即可。
三、在FTP服务器上更改文件名。
如果将更新的文件换一个名称,客户端肯定是可以即可更新了。
四、客户端删除IE缓存。
在客户端删除IE缓存后,因为在IE缓存找不到相同的文件名,就直接从FTP服务器上下载了,当然是更新的了。
尽管找到解决问题的办法了,但还是有个问题让我不明白,IE缓存文档更新为什么只看文件名,而不管文件大小是否改变或文件更改时间了?如果都按系统的默认设置,IE缓存是自动方式,FTP访问是本地视图,那用户在访问时,如果FTP服务端有更新,而文件名又未改了,那在客户端永远看不到即时更新了(除非删除IE缓存)。
按理说系统的默认设置都是满足大众化的需求了。
这点实在让人不明白了。