2012-09-18 39 views
2

我可能希望发送一个数据包,或通过网络发送某种请求,但不会发送任何特定的请求。一台机器或可能的多个机器将安装一个软件,监听这个特定的数据包或请求并作出响应。然后大型机服务器会知道它有多少个服务器可以共享工作。C#通过网络发送请求并等待响应,从任何东西?

我可以使用某种形式的UDP广播或TCP包来实现这种事情吗?我会使用C#.NET来做到这一点。

这个问题的最终结果将是有有需要完成的任务,但如果喜欢任何可用的共享工作了跨越多个机器的主服务器,但它永远不会知道他们什么。它会发出请求说“我需要完成一些工作”,一台机器会响应像“免费”+ IP地址,然后主机将能够使用TCP连接提供工作(我可以轻松实现这一部分) 。我只需要通过网络进行最初的盲目请求。

我希望是有道理的,如果我必须找出另一种方式让主机知道的所有工人的话,我会,但我宁愿不要了。

感谢

史蒂夫

回答

3

您可以使用此代码尝试 - 基于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(); 
1

你可能会考虑使用ZeroConf(又名Apple Bonjour,苹果拥有的Bonjour SDK适用于Windows)。 ZeroConf/Bonjour的一部分是服务发现。 RFC没有为它们是:

这些RFC的两个是IETF推荐标准。

这里是维基百科的文章就可以了:http://en.wikipedia.org/wiki/Zero_configuration_networking

此外,O'Reilly出版的书Zero Configuration Networking: The Definitive Guide,由丹尼尔·斯坦伯格和斯图尔特柴郡,收集大部分的相关信息在一个地方。

book cover

相关问题