示例#1
0
        public GameLSClient(TcpClient client)
        {
            GameServer.LoginServer = this;

            netstream = client.GetStream();

            byte[] message = new byte[4096];
            int    msgsize = 0;

            while (true)
            {
                try { msgsize = netstream.Read(message, 0, 4096); }
                catch { break; } //socket error

                if (msgsize == 0)
                {
                    break; // lost connection to login server
                }

                //message received
                HandlePacket(message.Take(msgsize).ToArray());
            }

            GConsole.WriteError("Lost connection to loginserver.");

            client.Close();
        }
示例#2
0
        public static void Initialize(IPAddress ip, int port, IPAddress loginip, int loginport)
        {
            IPAddressGame  = ip;
            IPAddressLogin = loginip;
            PortLogin      = loginport;
            PortGame       = port;

            AuthPlayers = new Dictionary <int, string>();

            // Initialize DBManager
            DBManager.Initialize();

            // Initialize TCPListener
            tcpListener = new TcpListener(ip, port);

            // Connect to login server
            GConsole.WriteStatus("Connecting to LoginServer at {0}:{1}.", loginip, loginport);

            bool loop = true;

            while (loop)
            {
                try
                {
                    TcpClient tcpLSClient = new TcpClient(loginip.ToString(), loginport);
                    Thread    tLSListen   = new Thread(new ParameterizedThreadStart(HandleLSClient));
                    tLSListen.Start(tcpLSClient);

                    GConsole.WriteStatus("Connected to LoginServer.");

                    loop = false;
                }
                catch
                {
                    GConsole.WriteError("Failed connecting to LoginServer. Trying again in 5 seconds...");
                    Thread.Sleep(5000);
                }
            }

            // Listen for clients
            tListen = new Thread(new ThreadStart(ListenClients));
            tListen.Start();
        }