2012-09-18 74 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

相關問題