【问题标题】:C# Send request out over a network and wait for a response, from anything?C# 通过网络发送请求并等待任何响应?
【发布时间】:2012-09-18 19:06:28
【问题描述】:

我可能希望通过网络发送一个数据包或某种请求,但不是针对任何特定的。一台机器或可能的多台机器将安装一个软件来监听这个特定的数据包或请求和响应。大型机服务器就会知道它也有 x 台服务器来分担工作。

我可以使用某种形式的 UDP 广播或 TCP 数据包来实现这种事情吗?我将使用 C# .NET 来执行此操作。

这个问题的最终结果是拥有一个主服务器,它有任务要完成,但如果有可用的机器,它喜欢在多台机器上共享工作,但它永远不会知道关于它们的任何事情。它会发出请求说“我需要完成一些工作”,机器会响应“我空闲”+ IP 地址,然后主机将能够使用 TCP 连接来交付工作(我可以轻松实现这部分) .我只需要通过网络发出初始盲请求。

我希望这是有道理的,如果我必须想出另一种方法让主机知道它的所有工人,那么我会,但我也不希望这样做。

谢谢

史蒂夫

【问题讨论】:

    标签: c# .net networking


    【解决方案1】:

    听起来您想要进行多播,使用 UDP 而不是 TCP 可以很好地完成。

    我发现一篇文章描述了你会如何做这样的事情。

    http://www.codeproject.com/Articles/1705/IP-Multicasting-in-C

    【讨论】:

      【解决方案2】:

      您可以尝试使用此代码 - 基于 TcpClient

                  TcpClient tcpclnt = new TcpClient();
                  Console.WriteLine("Connecting.....");
      
                  tcpclnt.Connect("...",8001);
                  // use the ipaddress as in the server program
      
                  Console.WriteLine("Connected");
                  Console.Write("Enter the string to be transmitted : ");
      
                  String str=Console.ReadLine();
                  Stream stm = tcpclnt.GetStream();
      
                  ASCIIEncoding asen= new ASCIIEncoding();
                  byte[] ba=asen.GetBytes(str);
                  Console.WriteLine("Transmitting.....");
      
                  stm.Write(ba,0,ba.Length);
      
                  byte[] bb=new byte[100];
                  int k=stm.Read(bb,0,100);
      
                  for (int i=0;i<k;i++)
                      Console.Write(Convert.ToChar(bb[i]));
      
                  tcpclnt.Close();
      

      【讨论】:

        【解决方案3】:

        您可能会考虑使用ZeroConf(又名Apple Bonjour,Apple 有适用于 Windows 的 Bonjour SDK)。 ZeroConf/Bonjour 的一部分是服务发现。其 RFC 是:

        这两个 RFC 都是 IETF 提议的标准。

        这是关于它的维基百科文章:http://en.wikipedia.org/wiki/Zero_configuration_networking

        此外,还有 Daniel Steinberg 和 Stewart Cheshire 所著的 O'Reilly 书籍 Zero Configuration Networking: The Definitive Guide,它将大部分相关信息收集在一个地方。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-18
          • 2011-01-12
          • 2015-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-17
          • 2012-12-30
          相关资源
          最近更新 更多