【发布时间】:2016-05-08 10:42:31
【问题描述】:
我有一个连接到多个客户端的 TcpListener。我可以获得所有已连接客户端的列表吗?
【问题讨论】:
-
@BewareSalah 您可以在接受
TcpClients 时手动将其保留在列表中。
标签: c# tcplistener
我有一个连接到多个客户端的 TcpListener。我可以获得所有已连接客户端的列表吗?
【问题讨论】:
TcpClients 时手动将其保留在列表中。
标签: c# tcplistener
我认为最好的方法是在打开连接时将客户端添加到列表中:
public TcpClient connectedClients = new list<TcpClient>();
public void ConnectClient(int ip, int port)
{
tcp.Connect(ip, port);
connectedClients.Add(tcp);
}
如果您断开其中一个客户端:
public void DisconnectClient(int ip, int port)
{
tcp.Close();
connectedClients.RemoveRange(0, connectedClients.Length)
}
因为当你关闭一个 TcpClient 时,所有的连接都被断开了,你还不如清空这个列表。
希望这会有所帮助。
【讨论】:
当您接受服务器上的连接时,您可以将客户端放入列表中。
TcpListener server = new TcpListener(port);
server = new TcpListener(localAddr, port);
// Start listening for client requests.
server.Start();
List<TcpClient> listConnectedClients = new List<TcpClient>();
while(true)
{
TcpClient client = server.AcceptTcpClient();
listConnectedClients.Add(client);
}
【讨论】: