>我在服务器上使用以下代码进行服务器和客户端之间的通信
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客户端的简要指南将不胜感激。
您可能希望将server.AcceptTcpClient()
放在循环中,因为每次新客户端连接时,它都会返回另一个TcpClient
。 您可以在此处的 MSDN 文档中看到一个简单的示例:http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.accepttcpclient.aspx
你仍然会有一个侦听器...但是每个"接受"应该生成一个不同的线程或任务。 然后,新线程将创建自己的流。
在服务器端做这样的事情:
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
}
}