private void mClientDestroy() { if (!FuzzyServer.getInstance().DestroyThread.IsAlive) { FuzzyServer.getInstance().DestroyThread.IsBackground = true; FuzzyServer.getInstance().DestroyThread.Start(); } }
private Client CreateAndGet_Client(Socket Sck) { int CurrentClientId = FuzzyServer.getInstance().getID(); Client CurrentClient = new Client(); CurrentClient.ID = CurrentClientId; CurrentClient.SOCKET = Sck; CurrentClient.CLOSEDSTATE = Client.ClosedStates.NULL; CurrentClient.LASTCONNECTIONTIME = DateTime.Now.ToString(); CurrentClient.PROCESS = 0; return(CurrentClient); }
public override Client Invoke() { // Permission Control Accept_PermissionControl(); // Wait clients reconnecting. // And destroy. mClientDestroy(); //Get Accepted Client Socket mSocket = GetClientWithState(); #region Ip Permission Control Console.WriteLine(mSocket.RemoteEndPoint.ToString()); string REMOTEIP = mSocket.RemoteEndPoint.ToString(); string[] exp = REMOTEIP.Split(':'); Permissions.IpPermission Permission = new Permissions.IpPermission(); Permission.FilePath = FuzzyServer.getInstance().m_initializeType.Paths.IpPermissions; Permission.TargetIP = exp[0].ToString(); if (!Permission.PermissionControl()) { mSocket.Send(Encoding.UTF8.GetBytes("You have banned This Server!")); mSocket.Close(); throw new Exception(exp[0].ToString() + " Banned This Server!"); } #endregion //Detect forcibly closed client DetectReconnection(mSocket); //Create Client Datas Client mClient = CreateAndGet_Client(mSocket); //Send accepting data for user method. Thread AcceptTaskTh = new Thread(new ThreadStart(() => { FuzzyServer.getInstance().AcceptTask(mClient); })); if (FuzzyServer.getInstance().AcceptTask != null) { AcceptTaskTh.Start(); } AddSocketList_Client(mClient); return(mClient); }
private Socket GetClientWithState() { return(FuzzyServer.getInstance().ServerSocket.EndAccept(Result)); }