private void Login(string[] message, Socket ClientSocket) { string username = message[1]; string password = message[2]; string confirmation; if (database.IsLoggedIn(message[1])) { confirmation = "LoginF" + "," + "You are already logged in"; ClientSocket.Send(Encoding.ASCII.GetBytes(confirmation), confirmation.Length, SocketFlags.None); messageBox.AppendText(username + " : Failed Login Attempt\n"); } else { if (database.AuthenticateUser(username, password)) { confirmation = "LoginS" + "," + username + "," + " You Logged in Successfully"; database.AddLogin(username); ClientSocket.Send(Encoding.ASCII.GetBytes(confirmation), confirmation.Length, SocketFlags.None); messageBox.AppendText(username + " : Logged In successfully\n"); } else { confirmation = "LoginF" + "," + "Invalid Credentials"; ClientSocket.Send(Encoding.ASCII.GetBytes(confirmation), confirmation.Length, SocketFlags.None); messageBox.AppendText("Failed login Attempt\n"); } } }
// Leer informacion que llega al servidor private void OnIncomingData(ServerClient c, string data) { string[] aData = data.Split('|'); //login if (c.clientName != null) { //Program.form.DebugTextBox.Text += "\r\nClient '" + c.clientName + "' sent command: " + data; } else { Program.form.DebugTextBox.Text += "\r\nNuevo cliente tratando de unirse al servidor. Solicitud autenticacion."; if (aData[0] == "YoSoy") { bool authenticated = Database.AuthenticateUser(aData[1], aData[2]); if (!authenticated) { if (!Database.existUser(aData[1])) { Database.addUser(aData[1], aData[2]); c.clientName = aData[1]; c.id = Database.getId(aData[1]); Program.form.DebugTextBox.Text += "\r\nUsuario Autenticado"; Broadcast("Autenticado|", c); } } else if (authenticated) { foreach (ServerClient client in clients) { if (aData[1] == client.clientName) { Program.form.DebugTextBox.Text += "\r\nEste usuario ya esta conectado"; c.tcp.Close(); disconnectList.Add(c); return; } } c.clientName = aData[1]; c.id = Database.getId(aData[1]); Program.form.DebugTextBox.Text += "\r\nUsuario Autenticado"; Broadcast("Autenticado|", c); } else { Program.form.DebugTextBox.Text += "\r\nAuntenticacion de usuario fallida. "; c.tcp.Close(); disconnectList.Add(c); } return; } } //gameplay commands switch (aData[0]) { case "SolicitudSincronizacion": SynchronizeUnits(c, aData[1]); // SynchronizeBalon(c); break; case "Jugar": Unit unit = new Unit(); unit.clientName = c.clientName; unit.clientId = c.id; //give a new ID to the new units int newid = 0; //if (c.id%2!=0) unit.unitID = 0; //else unit.unitID = 1; foreach (Unit u in units) { if (u.unitID >= newid) { newid = u.unitID + 1; } } unit.unitID = newid; units.Add(unit); if (units.Count == 1) { unit.unitPositionX = 3.37f; unit.unitPositionY = 5.5f; } else if (units.Count == 2) { unit.unitPositionX = 14.68f; unit.unitPositionY = 5.5f; } Broadcast("UnidadAgregada|" + c.clientName + "|" + unit.unitID + "|" + unit.unitPositionX + "|" + unit.unitPositionY + "|" + c.id, clients); break; case "Moving": if (aData[1].Equals("balon")) { Broadcast("ballMoved|" + c.clientName + "|" + aData[1] + "|" + aData[2] + "|" + aData[3], clients); int ball; Int32.TryParse(aData[1], out ball); float X; float Y; float.TryParse(aData[2], out X); float.TryParse(aData[3], out Y); balon.ballPositionX = X; balon.ballPositionY = Y; balon.clientName = c.clientName; } else { Broadcast("UnidadMovida|" + c.clientName + "|" + aData[1] + "|" + aData[2] + "|" + aData[3], clients); int id; Int32.TryParse(aData[1], out id); float parsedX; float parsedY; float.TryParse(aData[2], out parsedX); float.TryParse(aData[3], out parsedY); foreach (Unit u in units) { if (u.unitID == id) { // Console.WriteLine(u.unitID+""); // Console.WriteLine(parsedX + ""); // Console.WriteLine(parsedY + ""); u.unitPositionX = parsedX; u.unitPositionY = parsedY; } } //Program.form.DebugTextBox.Text += "\r\n" + parsedX + " " + parsedY; } break; case "Goal": string GoalsAmount = aData[1]; Broadcast("ChangeMarker|" + c.clientName + "|" + GoalsAmount, clients); break; default: //Program.form.DebugTextBox.Text += "\r\nReceived unknown signal => skipping"; break; } }