0
            tcpListener = new TcpListener(IPAddress.Any, 6007);
            tcpListener.Start();
            while (true)
            {
                TcpClient client = tcpListener.AcceptTcpClient();
                sw = new StreamWriter(client.GetStream());
                sr = new StreamReader(client.GetStream());
                while(true)
                    parseRequest(sr.ReadLine());
            }

これは基本的に、私が C# tcp サーバーに使用しているコードです。サーバーは複数の接続を処理する必要がありますが、同時に処理する必要はありません。そのため、1 つのクライアントで動作し、そのクライアントが切断されたときに次のクライアントに進みます。クライアントはさまざまな量のメッセージを送信でき、サーバーはこれらのメッセージを処理する必要があります。

問題は、最初のクライアントが切断されると、次のクライアントに接続されないことです。2 番目の while ループにコードを追加して、「if (!Client.Connected) break;」をチェックしようとしましたが、クライアント アプリケーションが終了した後でも、Connected は常に true を返しました。最初のクライアントが切断された後、2 番目のクライアントに接続できるようにするにはどうすればよいですか?

4

1 に答える 1

0

新しいクライアントを受け入れる同じループで完全に処理するのではなく、受け入れたソケットごとに新しいスレッドを開始するか、新しいリスナーを登録する必要があります。受け入れループは他に何もしません。

于 2013-03-14T01:34:04.353 に答える