2013-03-24 223 views
-2

我在寫一個處理服務器和客戶端的應用程序。我不一定知道如何讓服務器處理多個客戶端,這是我遇到問題的地方。現在服務器端只處理一個客戶端。 那麼我如何處理多個客戶端。處理多個客戶端

回答

2

您可以保持TcpListener打開並接受多個連接。爲了有效地處理多個連接,您需要多線程服務器代碼。現在

static void Main(string[] args) 
{ 
    while (true) 
    { 

     Int32 port = 14000; 
     IPAddress local = IPAddress.Parse("127.0.0.1"); 

     TcpListener serverSide = new TcpListener(local, port); 
     serverSide.Start(); 
     Console.Write("Waiting for a connection with client... "); 
     TcpClient clientSide = serverSide.AcceptTcpClient(); 
     Task.Factory.StartNew(HandleClient, clientSide); 
    } 
} 

static void HandleClient(object state) 
{ 
    TcpClient clientSide = state as TcpClient; 
    if (clientSide == null) 
     return; 

    Console.WriteLine("Connected with Client"); 
    clientSide.Close(); 
} 

你可以做所有你需要HandleClient做,當主循環將繼續偵聽其他連接的處理。