【发布时间】:2012-11-16 15:31:58
【问题描述】:
我在服务器上使用以下代码进行服务器和客户端之间的通信
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 个客户的简要指南将不胜感激。
【问题讨论】:
-
是的,您需要处理多个连接来处理多个客户端。除非您解决了一个非常严重的问题(事实上您的服务器代码将接受单个客户端然后断开连接),否则您将面临修改现有 oode 的巨大挑战。
-
简而言之,你只需要一个监听器,但需要多个流。每次客户端连接时,您都接受连接。您将需要一个客户端类来处理所有这些。我建议您寻找一些示例代码(它很丰富),而不是详细说明并发布答案。
-
有两种方法,要么需要使用异步套接字,要么需要为每个接受的 TcpClient 创建一个新线程,在新线程中启动无限循环,然后等待听。使用线程技术根本无法很好地扩展。
标签: c# sockets networking network-programming tcpclient