0

サーバーとクライアント間の通信にサーバーで次のコードを使用しています

TcpListener server = new TcpListener(IPAddress.Any, 9999);
server.Start();

Console.WriteLine("Waiting for client connections");
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Client request accepted");

NetworkStream stream = client.GetStream();
StreamReader reader = new StreamReader(stream);
StreamWriter writer = new StreamWriter(stream);

これで、このコードは単一のクライアントを接続するのに問題なく動作しますが、複数のクライアントがサーバーに接続できるようにするには、どのような微調整を行う必要がありますか?

クライアントごとに新しいポートに新しい TCP リスナーが必要ですか? 複数の TCP クライアントとストリームが必要ですか? このコードを 1 つ以上のクライアントを処理できるようにするための簡単なガイドをいただければ幸いです。

4

3 に答える 3

2

server.AcceptTcpClient()新しいクライアントが接続するたびに別の が返されるため、 をループに入れたいと思うでしょうTcpClient。この簡単な例は、次の MSDN ドキュメントで確認できます: http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.accepttcpclient.aspx

于 2012-11-16T15:34:50.127 に答える
1

リスナーはまだ 1 つですが、「受け入れ」ごとに異なるスレッドまたはタスクが生成されるはずです。その後、新しいスレッドは独自のストリームを作成します。

于 2012-11-16T15:35:38.937 に答える
0

サーバー側で次のようなことを行います。

            while (true)
            {
              if (server.Pending()) // if there are any pending connections to server
                  {
                      //accept tcpClient and perform further operations.
                      //create a different thread per client
                   }
            }
于 2012-11-16T15:39:16.890 に答える