예제 #1
0
 public override void EndService()
 {
     base.EndService();
     if (loginServerSocket != null)
     {
         loginServerSocket.Disconnect();
     }
 }
예제 #2
0
 public void Close()
 {
     if (socket != null && socket.IsConnected == true)
     {
         socket.Disconnect();
         socket = null;
     }
 }
예제 #3
0
        private void Socket_OnPacketsReceived(IPacketSend socket, Queue <BasePacket> receivedPackets)
        {
            numPacketsReceived += receivedPackets.Count;

            // Look for a server id packet if we've only just connected
            if (!isBoundToGateway)
            {
                var packet = receivedPackets.Dequeue();
                if (packet is ServerIdPacket)
                {
                    ServerIdPacket id = packet as ServerIdPacket;
                    if (id != null && id.Type == ServerIdPacket.ServerType.Gateway)
                    {
                        isBoundToGateway = true;
                        OnConnect?.Invoke();
                    }
                }
                else
                {
                    socket.Disconnect();
                    Console.Error.WriteLine("Unexpected packet type, disconnecting: {0}", packet.PacketType);
                    return;
                }
            }
            // Look for a login credentials valid packet if we've tried to log in
            else if (!IsLoggedIn && hasSentCredentials)
            {
                var packet = receivedPackets.Dequeue();
                if (packet is LoginCredentialValid)
                {
                    HandleLoginCredentialsValidPacket(packet as LoginCredentialValid);
                }
                else
                {
                    socket.Disconnect();
                    Console.Error.WriteLine("Unexpected packet type, disconnecting: {0}", packet.PacketType);
                    return;
                }
            }
            lock (unprocessedPackets)
            {
                // Store the other packets for retrieval later
                unprocessedPackets.AddRange(receivedPackets);
            }
        }
예제 #4
0
 public void EndClient()
 {
     socket.Disconnect();
 }