请教用StreamReader读取网络数据时的问题
写了一个程序,使用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请问,则可以一直收到数据,就象股票数据那样,隔一定时间就会发送一批数据过来”,但同时能监控何时连接有问题(一旦有问题就会抛出异常,捕获异常后才能进行必须的对应处理),但又能一次接收很大数量的数据?