在C#中向服务器发送/接收数据

时间:2011-01-21 23:27:03

标签: c#

在我的程序中,我需要从服务器请求数据,并在收集响应时,使用返回的数据进行进一步处理。

我正在使用" system.net.webrequest"同一类。我对此几乎没有问题:

  1. 收到数据后(数据最小为0.5MB)我必须处理整个数据以得到一些结果。我想将返回的数据存储在" txt"文件,然后从该文件和过程中读取数据。
  2. 这是一个更好的主意吗?如果没有,请你建议。

    1. 我正在向多个服务器(> 10台服务器)发送请求并使用来自它们的数据。我观察到由于某种原因,如果服务器无法访问,那么我的程序停止抛出异常

      服务器无法访问
      类型为#System; Net.WebException'的第一次机会异常发生在System.dll

    2. 我该如何解决这个问题?有什么想法吗?

      施展你的帮助。

      谢谢, 拉胡

2 个答案:

答案 0 :(得分:3)

关于例外;实施try / catch区域,并采取适当的措施(可能记录错误并将其排队等待一段时间重试)。

我不完全确定第一个问题是什么,因为我们不知道数据/系统是什么 - 但有些想法:

  • 减少带宽,如果服务器支持压缩,请确保告诉它 - 相应地设置accept-header(request.Accept = "gzip,deflate";,如果使用HttpWebRequest);或者如果你控制管道的两端,可能是更密集的序列化格式
  • 确保在处理数据时正确使用Dictionary<,>之类的内容;如果不知道“处理”或“数据”在您的特定背景下意味着什么,我无法告诉您什么是“合适的”; p

答案 1 :(得分:1)

只有在您不希望或不能在收到数据时处理数据或者为了进行调试而需要处理数据后,才需要将数据保存到文件中。我通常会避免像这样创建这样的文件,因为它会增加维护开销。

要继续处理来自其他服务器的数据,如果出现异常,则需要使用Try/Catch块,如下所示(伪):

foreach (var server in serverList)
{
    try
    {
        ... fetch data and process ...
    }
    catch (Exception ex)
    {
        // handle exception (log, requeue, etc)
    }
}