求助:读取网络文件失败,返回“远程主机强迫关闭了一个现有连接”

问题描述

我的函数需要遍历下载100个YAHOO股票文件,但是如果当前股票停盘,如果我读取这个股票的文件则提示“远程主机强迫关闭了一个现有连接”,如果继续循环往下遍历走的话,则失败,必须等待几十秒的超时后,才能继续进行FOR循环下载,请问这种问题如何解决?下面的代码,600317可以下载,但是600318现在停盘,下载数据会死掉下面是代码:privatevoidbutton2_Click_1(objectsender,EventArgse){stringstrUri;stringfilename;WebClientwc=newWebClient();//download600317--600417for(inti=600317;i<=600417;i++){try{//readthedatafrom2014-7-1to2014-9-11strUri="http://table.finance.yahoo.com/table.csv?a=6&b=1&c=2014&d=8&e=11&f=2014&s=600"+Convert.ToString(i)+".ss";filename="D:\vs\csv\"+Convert.ToString(i)+".csv";DownLoadFile(strUri,filename);}catch(Exceptionee){MessageBox.Show("failed2");}}MessageBox.Show("downloadsuccess");}privatevoidDownLoadFile(stringOriUri,stringfilename){Streamstr;FileStreamfstr;WebClientclient=newWebClient();byte[]mbyte=newbyte[100000];intallmybyte=0,startmbyte=0;try{str=client.OpenRead(OriUri);allmybyte=(int)mbyte.Length;startmbyte=0;while(allmybyte>0){intm=str.Read(mbyte,startmbyte,allmybyte);if(0==m){break;}startmbyte+=m;allmybyte-=m;}fstr=newFileStream(filename,FileMode.OpenOrCreate,FileAccess.Write);fstr.Write(mbyte,0,startmbyte);fstr.Flush();fstr.Close();str.Close();}catch(Exceptiono){MessageBox.Show(o.Message);return;}client.Dispose();}

解决方案

解决方案二:
把下载股票的操作改为并行执行
解决方案三:
用哪个并行函数?我是个菜鸟,还请多指教
解决方案四:
函数?.Net4.0以上用Task类
解决方案五:
你的代码单线循环,一次下载完成后再执行下一次下载,效率会很低改成异步进行,多个线程并行下载
解决方案六:
for本身是同步的..你可以使用Parallel.for其次
解决方案七:
System.Threading.Tasks.Parallel.For(600317,600417,(i)=>{varw=newWebClient();varurl="http://table.finance.yahoo.com/table.csv?a=6&b=1&c=2014&d=8&e=11&f=2014&s=600"+i.ToString()+".ss";varfilename="D:\"+i.ToString()+".csv";varb=w.DownloadData(url);using(FileStreamfs=newFileStream(filename,FileMode.OpenOrCreate,FileAccess.Write)){fs.Write(b,0,b.Length);fs.Flush();fs.Close();}});

简单的写了下没有测试..不过就是这个思路...其中DownloadData也是有异步的..你可以看下...(因为没用过DownloadDataAsync所以不敢乱写....)

时间: 2024-12-29 02:32:54

求助:读取网络文件失败,返回“远程主机强迫关闭了一个现有连接”的相关文章

紧急求助:RC: 10054 远程主机强迫关闭了一个现有的连接

问题描述 项目上线,但是报出下列错误,请高手解答下,不胜感激:[11-12-515:07:41:593CST]00000017srtEcom.ibm.ws.webcontainer.srt.SRTServletRequestparseParametersSRVE0133E:解析参数时出错.{0}java.io.IOException:AsyncIOoperationfailed(1),reason:RC:10054远程主机强迫关闭了一个现有的连接.atcom.ibm.io.async.Async

一个网络程序,在局域网调试没有问题,把服务器端移到英特网(外网)上,运行客户端时出现&amp;amp;quot;远程主机强迫关闭了一个现有的连接&amp;amp;quot;错误!请高手进,在线等

问题描述 服务器端代码:classThreadtcp{privateSocketserver;publicThreadtcp(){IPAddresslocal=Dns.GetHostAddresses(Dns.GetHostName())[0];IPEndPointiep=newIPEndPoint(local,30000);server=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);server

C# modbus tcp协议在运行时出现远程主机强迫关闭了一个现有的连接

问题描述 在做上位机与下位机通讯的时候(其中上位机端为客户端,下位机端为服务器端),当出现上位机与下位机通讯断线重连的时候,会偶尔(并不是每次都会出现)出现这个问题:远程主机强迫关闭了一个现有的连接.查了下问题应该是出在红色的那一块,这个该怎么解决?internalclassModbus_SocketWrapper:IDisposable{privatestaticintPort=Int32.Parse(ConfigurationManager.AppSettings["Port"])

Adb connection Error:远程主机强迫关闭了一个现有的连接

做android开发的时候eclipse的console一直出现这个问题,有时候是启动eclipse后就出现这个问题,有时候是运行android程序的时候出现的,重启avd和重启eclipse都不行.后面在网上找到了解决办法. 先说原因嘛,这是ddms调用adb引发的. 经过一番搜索, 发现这是windows环境下, adb的一个限制, 也可以说是bug.  当手机上同时运行的进程数大于64时, 就会引发adb奔溃. 更深层次的原因, 就是windows API的WaitForMultipleO

真机调试遇到麻烦:远程主机强迫关闭了一个现有的连接

问题描述 真机调试遇到麻烦:远程主机强迫关闭了一个现有的连接 使用豌豆荚,USB线连接手机,Eclipse中运行Android应用程序时, 总是提示:远程主机强迫关闭了一个现有的连接. 在网上下了几个adb.exe文件放到SDK/platform-tools下,还是不行 请问各位高手,怎么彻底解决这个问题, 我用的API-18 Android4.3 ADT:v22.2.1-833290 解决方案 看下你的真机是不是安装了杀毒软件或者什么软件干扰了你的程序 解决方案二: 手机上有策略不允许你链接访

Netty学习4—NIO服务端报错:远程主机强迫关闭了一个现有的连接

1 发现问题 NIO编程中服务端会出现报错 Exception in thread "main" java.io.IOException: 远程主机强迫关闭了一个现有的连接. at sun.nio.ch.SocketDispatcher.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:25) at sun.nio.ch.IOUtil.readIntoNativeBuffer(I

求解决Webservice 接口调用远程主机强迫关闭了一个现有的连接异常

问题描述 HttpWebRequestrequest=HttpWebRequest.Create(url+"?WSDL")asHttpWebRequest;HttpWebResponseresponse=request.GetResponse()asHttpWebResponse;//这一句异常if(response.StatusCode!=HttpStatusCode.OK)returnfalse;url为一个Webservice接口连接,程序调用也不是每个调用都不成功,我在多个客户

adb-Adb connection Error:远程主机强迫关闭了一个现有的连接。

问题描述 Adb connection Error:远程主机强迫关闭了一个现有的连接. andriod 启动虚拟机的时候报以下错误 [2015-01-25 16:10:29 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接. [2015-01-25 16:10:30 - DeviceMonitor] Connection attempts: 1 [2015-01-25 16:10:32 - DeviceMonitor] Connecti

socket异步 强迫关闭-Socket异步传输远程主机强迫关闭了一个现有的链接

问题描述 Socket异步传输远程主机强迫关闭了一个现有的链接 class AsyncProgram { static Thread thead = null; static Thread theadclient = null; static int port = 12345; static Socket server = null; static Socket client = null; static int buffersize = 40960000; static void Main()