我是否需要多个流和TCP客户端才能在c#中创建聊天应用程序

时间:2012-11-16 15:31:58

标签: c# sockets networking network-programming tcpclient

我在服务器上使用以下代码进行服务器和客户端之间的通信

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客户的简要指南将不胜感激。

3 个答案:

答案 0 :(得分:2)

您希望将server.AcceptTcpClient()置于循环中,因为每次新客户端连接时都会返回另一个TcpClient。您可以在MSDN文档here: http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.accepttcpclient.aspx

中看到一个简单的示例

答案 1 :(得分:1)

你仍然会有一个听众......但是每个人都接受了#34;应该产生不同的线程或任务。然后新线程将创建它自己的流。

答案 2 :(得分: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
                   }
            }