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"); } }