namespace Holo.Socketservers { using Holo; using Holo.Virtual.Users; using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; public static class gameSocketServer { private static int ᙅ; private static Socket ᙄ; private static int 4AAAA; private static int 5AAA1; private static HashSet 6AAAA; private static void ᙃ(IAsyncResult ᙂ) { try { int item = 0; for (int i = 1; i < 4AAAA; i++) { if (!6AAAA.Contains(i)) { item = i; break; } } if (item > 0) { Socket connectionSocket = ((Socket) ᙂ.AsyncState).EndAccept(ᙂ); Out.WriteLine(string.Concat(new object[] { "Connessione accettata [", item, "] da ", connectionSocket.RemoteEndPoint.ToString().Split(new char[] { ':' })[0] })); 6AAAA.Add(item); 5AAA1++; new virtualUser(item, connectionSocket); } } catch { } ᙄ.BeginAccept(new AsyncCallback(gameSocketServer.ᙃ), ᙄ); } internal static void freeConnection(int connectionID) { if (6AAAA.Contains(connectionID)) { 6AAAA.Remove(connectionID); Out.WriteLine("Connessione siglata [" + connectionID + "] libera."); } } internal static bool Init(int bindPort, int maxConnections) { ᙅ = bindPort; 4AAAA = maxConnections; 6AAAA = new HashSet(); ᙄ = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Out.WriteLine("Avvio del server di gioco asincrono sulla porta " + bindPort + "..."); try { ᙄ.Bind(new IPEndPoint(IPAddress.Any, bindPort)); ᙄ.Listen(0x19); ᙄ.BeginAccept(new AsyncCallback(gameSocketServer.ᙃ), ᙄ); Out.WriteLine("Server di gioco asincrono avviato sulla porta " + bindPort); Out.WriteLine("Massimo di connessioni simultane " + maxConnections); return true; } catch { Out.WriteError("Errore durante il tentativo di avvio del server di gioco sulla porta " + bindPort); Out.WriteError("Porta " + bindPort + " invalida o gi\x00e0 occupata."); return false; } } internal static int acceptedConnections { get { return 5AAA1; } } internal static int maxConnections { get { return 4AAAA; } set { 4AAAA = value; } } } }