Example #1
0
        void ParseMessage(byte[] bytes)
        {
            Package package = Package.Build(bytes);
            string  str1, str2;

            package.Extract(out str1, out str2);

            switch (package.type)
            {
            case Protocol.PackageType.LOGIN:
                Console.WriteLine("login from " + str1);
                if (privateName == null)
                {
                    bool allowLogin = true;
                    foreach (User user in server)
                    {
                        if (str1 == user.name)
                        {
                            Send(new Package("No", privateName, Protocol.PackageType.LOGIN));
                            allowLogin  = false;
                            privateName = null;
                            break;
                        }
                    }
                    if (allowLogin)
                    {
                        privateName = str1;
                        Send(new Package("Yes", privateName, Protocol.PackageType.LOGIN));

                        foreach (User user in server)
                        {
                            user.Send(new Package("connect", privateName, Protocol.PackageType.CONNECT));
                        }
                    }
                }
                else
                {
                    throw new Exception("Try to reloginning\n");
                }
                break;

            case Protocol.PackageType.MESSAGE:
                foreach (User user in server)
                {
                    if (user.name == str1)
                    {
                        user.Send(new Package(privateName, str2));
                    }
                }
                break;

            default:
                throw new Exception("Receive package with incorrect type\n");
            }
        }