|
楼主发表于:2009-01-10 00:00:05
写了一个程序,使用StreamReader读取网络数据,只要向网址指定的地址发送一个HTTP请问,则可以一直收到数据,就象股票数据那样,隔一定时间就会发送一批数据过来。 但是有两个问题: 1.当一次有大量数据时会抛出异常 2.当网络中断时没有抛出异常 代码如下: string requestURLString = "连接的URL"; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURLString); StringBuilder sb = new StringBuilder(); string s; request.Method = "GET"; //向指定网址发送请求 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.ASCII); int bytesread = 0; bytesread = sr.Read(buffer, 0, bufferSiz); #if DEBUG log.Debug(requestURLString); log.Debug("成功发送请求"); #endif state = SERVERSTATE.WORKING; //开始不中断的读取网络中发来的数据 while (bytesread > 0) { s = new string(buffer, 0, bytesread); SendRealTimeData(s); //1.当一次有大量数据时会抛出异常 //以下读句在网络对方一次性发送少量数据时,没问题, //但如果网络对端一次性发送很大量的数据时,将抛出异常,即使数据长度小于bufferSiz, bytesread = sr.Read(buffer, 0, bufferSiz); } sr.Close(); state = SERVERSTATE.LOGOFF; if (ServerStopedEvent != null) { ServerStopedEvent(); } return; } //2.当网络中断时没有抛出异常 catch (Exception exp)//捕获异常,如果网络出的异常,则进行异常处理,但网络中断后,调试没发现捕获到异常,为什么? { log.Error(exp.Message); if (ServerStopedEvent != null) { ServerStopedEvent(); } state = SERVERSTATE.LOGOFF; return; } 请问如何解决以上2问题? 或者有什么更好的办法能“向网址指定的地址发送一个HTTP请问,则可以一直收到数据,就象股票数据那样,隔一定时间就会发送一批数据过来”,但同时能监控何时连接有问题(一旦有问题就会抛出异常,捕获异常后才能进行必须的对应处理),但又能一次接收很大数量的数据? |
|
|
|