public void Register()
        {
            var LoginInfo = new MMOLogin();

            LoginInfo.nickname = inputNickname.text;
            LoginInfo.password = inputPassword.text;

            MultiplayerClient.singleton.SendData("Register", "", "Server", JsonConvert.SerializeObject(LoginInfo));
        }
Пример #2
0
        protected override void ClientManagement(object o)
        {
            int       id     = (int)o;
            TcpClient client = clientsList[id];

            bool isConnected = true;

            string nickname = "";

            while (isConnected)
            {
                NetworkStream stream = client.GetStream();
                byte[]        buffer = new byte[1024];
                try
                {
                    int byte_count = stream.Read(buffer, 0, buffer.Length);

                    if (byte_count == 0)
                    {
                        Console.WriteLine($"Client {id} disconnected");
                        BroadcastMessage("Disconnection", nickname, "All", "");
                        isConnected = false;

                        if (loggedClientsList.ContainsKey(nickname))
                        {
                            loggedClientsList.Remove(nickname);
                        }

                        break;
                    }

                    string     data           = Encoding.ASCII.GetString(buffer, 0, byte_count);
                    MMOMessage recivedMessage = JsonConvert.DeserializeObject <MMOMessage>(data);

                    if (recivedMessage.Reciever != "Server")
                    {
                        if (!string.IsNullOrEmpty(nickname))
                        {
                            recivedMessage.Sender = nickname;
                            BroadcastMessage(JsonConvert.SerializeObject(recivedMessage));
                            Console.WriteLine(data);
                        }
                    }
                    else
                    {
                        if (recivedMessage.Type == "Login")
                        {
                            //Comprobate
                            Console.WriteLine($"{0} is trying to start a connection");
                            MMOLogin logData = JsonConvert.DeserializeObject <MMOLogin>(recivedMessage.Message);
                            if (Login(logData.nickname, logData.password))
                            {
                                nickname = logData.nickname;
                                loggedClientsList.Add(nickname, client);
                                SendMessage("ConnectionAproved", "Server", nickname, "", client);
                            }
                            else
                            {
                                SendMessage("Error", "Server", "", "Incorrect login data", client);
                            }
                        }
                        else if (recivedMessage.Type == "Register")
                        {
                            MMOLogin logData = JsonConvert.DeserializeObject <MMOLogin>(recivedMessage.Message);
                            if (Register(logData.nickname, logData.password))
                            {
                                SendMessage("Alert", "Server", id.ToString(), "Succedfull register", client);
                            }
                            else
                            {
                                SendMessage("Error", "Server", id.ToString(), "Error ocurred on the register", client);
                            }
                        }
                    }
                }
                catch
                {
                    Console.WriteLine($"Client {id} disconnected in with an error");
                    BroadcastMessage("Disconnection", nickname, "All", "");
                    isConnected = false;

                    if (loggedClientsList.ContainsKey(nickname))
                    {
                        loggedClientsList.Remove(nickname);
                    }
                    break;
                }
            }

            clientsList.Remove(id);
            client.Client.Shutdown(SocketShutdown.Both);
            client.Close();
        }