2012-10-28 47 views
0

我想通過一組服務器和端口(每個服務器和端口3個)進行循環,並嘗試建立連接,一旦建立連接,我可以繼續其餘的代碼..這裏是我的。循環通過一系列服務器和端口

 IRC_SETTINGS IRC; //3 servers & 3 ports. 
     foreach (string SERVER in IRC.IRC_SERVERS) 
     { 
      try 
      { 
       ircSocket = new TcpClient(SERVER, PORT); 
       break; //;when we have a working connection. 
      } 
      catch(Exception){} 
     } 

我想這對服務器部分來說工作正常,但我該如何去同時循環端口?類似的foreach(字符串服務器,INT端口....

回答

1

你可以把它們放到一個數據結構(例如列表),並依次通過他們:

public class IrcServer 
{ 
    public string Name { get; set; } 
    public int Port { get; set; } 

    // perhaps some methods 
} 

IList<IrcServer> servers = new List<IrcServer>(); 

foreach(IrcServer server in servers) 
{ 
    // server.Name, server.Port 
} 

更新

由於您有兩個不同的陣列(一個用於服務器名稱,另一個用於端口號),您可以使用合併將它們用作字典:

int[] ports = { 1, 2, 3 }; 
string[] servers = { "one", "two", "three" }; 

var serversWithPorts = servers. 
    Zip(ports, (s, i) => new { s, i }). 
    ToDictionary(i=> i.s, i => i.i); 

foreach(var server in serversWithPorts) 
{ 
    Console.WriteLine(server.Key + ":" + server.Value); 
} 
+0

愚蠢的問題,但然後我在哪裏定義服務器和端口? :/我已經有一個類的服務器的字符串數組和端口的int數組... – ace007

+0

所以,你有兩個不同的數組,你不想讓它的單一結構? – Zbigniew

+0

我編輯了我的問題,也看看[這個問題](http://stackoverflow.com/questions/6133362/how-to-unifiy-two-arrays-in-a-dictionary) – Zbigniew