-2

サーバーとクライアントを扱うアプリケーションを書いています。サーバーで複数のクライアントを処理する方法が必ずしもわかっているわけではありません。ここで問題が発生します。現在、サーバー側は 1 つのクライアントのみを処理します。では、どうすれば複数のクライアントを処理できますか。

4

1 に答える 1

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これで、メインループが追加の接続をリッスンし続けている間に、必要なすべての処理を実行できます。

于 2013-03-24T02:22:02.013 に答える