Posiadając listę wszystkich połączonych z serwerem klientów:
private static List<Socket> _clients = new List<Socket>();
Chciałbym mieć możliwość dowolnego ich usuwania za pomocą metody
private static void kickClient(Socket client)
{
try
{
string text = "Serwer zakończył połączenie o: " + DateTime.Now.ToLongTimeString();
send(client, text);
client.Shutdown(SocketShutdown.Both);
client.Close();
_clients.Remove(client);
connections--;
Console.WriteLine("Klient został rozłączony...");
}
catch (SocketException se)
{
Console.WriteLine(se.ToString());
}
}
Dlatego moje pytanie brzmi, czy można jakoś sensownie identyfikować poszczególnych klientów za pomocą obiektu Socket? Rozwiązanie doraźne wygląd tak, że wybieram obiekt za pomocą jego indeksu z listy _clients.
np:
kickClient(_clients[1])
Ale to ma niestety niewielki sens, gdyż po każdym usunięciu obiektu z listy zmienia się jej indeksacja.