private static void AcceptCallback(IAsyncResult ar)
{
var socket = (Socket)ar.AsyncState;
try
{
var clientSocket = (Socket)socket.EndAccept(ar);
Log.Info($"Client connected from {clientSocket.RemoteEndPoint.ToString()}");
var client = new Client();
client.ID = Interlocked.Increment(ref _clientID);
client.Socket = clientSocket;
client.Stream = new SslStream(new NetworkStream(clientSocket));
client.EndPoint = (IPEndPoint)clientSocket.RemoteEndPoint;
Clients.Add(client.ID, client);
client.Stream.BeginAuthenticateAsServer(Certificate.BlazeHubServer, AuthenticateAsServerCallback, client.ID);
}
catch (Exception ex)
{
Log.Error(ex.ToString());
}
socket.BeginAccept(AcceptCallback, socket);
}