private static void CloseSocket(IAsyncResult ar)
{
try
{
var clientID = (long)ar.AsyncState;
var client = Clients[clientID];
lock (Clients)
{
if (Clients.ContainsKey(client.ID))
{
Clients.Remove(client.ID);
}
}
try
{
client.Socket.Shutdown(SocketShutdown.Both);
}
catch { }
client.Socket.Close();
Log.Info($"Client {clientID} disconnected");
}
catch (Exception ex)
{
Log.Error(ex.ToString());
}
}
}