private void Process() { while (ContinueProcess) { ClientHandler client = null; lock (ConnectionPool.SyncRoot) { if (ConnectionPool.Count > 0) { client = ConnectionPool.Dequeue(); } } if (client != null) { // if client still connect, schedufor later processingle it if (client.Alive) { client.Process(); // Provoke client ConnectionPool.Enqueue(client); } else { client.Close(); } } Thread.Sleep(1); } }
public void CancelConnection() { if (serverHandler != null) { serverHandler.Close(); serverHandler = null; NetworkServer.Shutdown(); } if (client != null) { if (clientHandler != null) { clientHandler.Close(); clientHandler = null; } client.Shutdown(); client = null; } }
public void Stop() { ContinueProcess = false; for (int i = 0; i < ThreadTask.Length; i++) { if (ThreadTask[i] != null && ThreadTask[i].IsAlive) { ThreadTask[i].Join(); } } // Close all client connections while (ConnectionPool.Count > 0) { ClientHandler client = ConnectionPool.Dequeue(); client.Close(); Console.WriteLine("Client connection is closed!"); } }
public void Stop() { ContinueProcess = false; // Close all client connections while (ConnectionPool.Count > 0) { ClientHandler client = ConnectionPool.Dequeue(); client.Close(); } for (int i = 0; i < ThreadTask.Length; i++) { if (ThreadTask[i] != null && ThreadTask[i].IsAlive) { ThreadTask[i].Abort(); } } }
public void Close(bool sendMessage) { lock (ClientHandler) { try { if (sendMessage) { byte[] messageType = BitConverter.GetBytes((int)Common.SocketMessageTypes.Disconnected); byte[] messageSize = BitConverter.GetBytes(Common.SocketDefaultMessages.Disconnected.Length); var closeMessage = new List <byte>(); closeMessage.AddRange(messageType); closeMessage.AddRange(messageSize); closeMessage.AddRange(Common.SocketDefaultMessages.Disconnected); ClientHandler.Send(closeMessage.ToArray()); } } catch (Exception) { } try { if (ClientHandler.Connected) { ClientHandler.Shutdown(SocketShutdown.Both); ClientHandler.Close(); } } catch (Exception) { } if (ConnectionClosed != null) { ConnectionClosed.Invoke(this); } } }
public void Stop() { ClientHandler?.Close(); }