处理多个客户端

时间:2013-03-24 02:18:34

标签: c#

我正在编写一个处理服务器和客户端的应用程序。我不一定知道如何让服务器处理多个客户端,这是我遇到问题的地方。现在服务器端只处理一个客户端。 那么我该如何处理多个客户端呢。

1 个答案:

答案 0 :(得分: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进行所有处理,同时主循环将继续侦听其他连接。