Пример #1
0
        /// <summary>
        /// Recieved the client disconnected packet.
        /// </summary>
        /// <param name="conPkt">The con PKT.</param>
        /// <returns>use as needed</returns>
        protected virtual bool ReceivedPacket_ClientDisconnected(KeyValuePair <ClientConnection, object> conPkt)
        {
            PacketDesc_ClientDisconnected packet = (PacketDesc_ClientDisconnected)conPkt.Value;

            Console.WriteLine("Recieved ClientDisconnected Packet! Client ID: " + conPkt.Key.ThisID + ", Data: disconnected client ID " + packet.OtherClientID);

            if (OnClientDisconnectedReceived != null)
            {
                OnClientDisconnectedReceived(conPkt);
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        /// Disconnects the specified unique identifier.
        /// </summary>
        /// <param name="uniqueID">The unique identifier.</param>
        public void Disconnect(int uniqueID = -1)
        {
            if (Clients.ContainsKey(uniqueID))
            {
                ClientListMutex.WaitOne();

                EConnectionType et = Clients[uniqueID].ConnectionType;

                PacketDesc_ClientDisconnected dcPkt = new PacketDesc_ClientDisconnected();
                dcPkt.OtherClientID        = uniqueID;
                dcPkt.PacketTarget         = et;
                dcPkt.PacketOriginClientID = UniqueID;
                SendPacketToAllClients(dcPkt, uniqueID);

                ConsoleLogger.WriteToLog("Disconnected Client ID:" + uniqueID, true);

                if (Clients[uniqueID].ThisClient != null)
                {
                    if (Clients[uniqueID].ThisClient.Connected)
                    {
                        Clients[uniqueID].ThisClient.GetStream().Close();
                        if (Clients[uniqueID].ThisClient != null)
                        {
                            Clients[uniqueID].ThisClient.Close();
                        }
                    }

                    Clients[uniqueID].ThisClient = null;
                    Clients.Remove(uniqueID);
                    NumClientThreads--;
                }

                ClientListMutex.ReleaseMutex();

                if (OnClientDisconnected != null)
                {
                    OnClientDisconnected(uniqueID);
                }
            }
        }