예제 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (username.Text != "" && password.Text != "")
            {
                //Creamos un IPEndPoint con el ip del servidor y puerto del servidor
                //al que deseamos conectarnos
                IPAddress  direc = IPAddress.Parse("147.83.117.22");
                IPEndPoint ipep  = new IPEndPoint(direc, puerto);


                //Creamos el socket
                server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                try
                {
                    server.Connect(ipep);//Intentamos conectar el socket
                    this.BackColor = Color.Green;
                    MessageBox.Show("Conectado");
                }
                catch (SocketException ex)
                {
                    //Si hay excepcion imprimimos error y salimos del programa con return
                    MessageBox.Show("No he podido conectar con el servidor");
                    return;
                }



                string user    = username.Text;
                string pass    = password.Text;
                string mensaje = "100/" + user + "/" + pass;
                // Enviamos al servidor el nombre tecleado
                byte[] msg = System.Text.Encoding.ASCII.GetBytes(mensaje);
                server.Send(msg);

                //Recibimos la respuesta del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                mensaje = Encoding.ASCII.GetString(msg2).Split('\0')[0];

                if (mensaje == "100/Correct")
                {
                    MessageBox.Show("Welcome " + user + ".");
                    prin = new Principal(server);

                    prin.setUser(user);
                    this.Hide();
                    prin.ShowDialog();

                    estado = prin.getStatus();

                    if (estado == 0)

                    {
                        mensaje = "0/";

                        msg = System.Text.Encoding.ASCII.GetBytes(mensaje);
                        server.Send(msg);

                        // Nos desconectamos
                        this.BackColor = Color.Gray;
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                    }
                    //Mensaje de desconexión

                    this.Close();
                }

                else
                {
                    if (mensaje == "100/NoUser")
                    {
                        MessageBox.Show("El usuario introducido no existe, porfavor regístrese.");
                    }
                    else if (mensaje == "100/Incorrect")
                    {
                        MessageBox.Show("Contraseña incorrecta.");
                    }
                    //Mensaje de desconexión
                    mensaje = "0/";

                    msg = System.Text.Encoding.ASCII.GetBytes(mensaje);
                    server.Send(msg);

                    // Nos desconectamos
                    this.BackColor = Color.Gray;
                    server.Shutdown(SocketShutdown.Both);
                    server.Close();
                }
            }
        }
예제 #2
0
파일: User.cs 프로젝트: Gnadal99/ProjectSO
        private void button1_Click(object sender, EventArgs e)
        {
            if (username.Text != "" && password.Text != "")
            {
                //Creamos un IPEndPoint con la dirección IP y puerto del servidor al que deseamos conectarnos.
                IPAddress  direc = IPAddress.Parse("147.83.117.22");//147.83.117.22  192.168.56.101
                IPEndPoint ipep  = new IPEndPoint(direc, puerto);

                //Creamos el socket .
                server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                //Intentamos conectar el socket.
                try
                {
                    server.Connect(ipep);
                }

                catch (SocketException ex)
                {
                    //Si hay excepcion imprimimos el error y salimos del programa con return.
                    MessageBox.Show("No he podido conectar con el servidor" + ex.Message);
                    return;
                }

                //Variables necesarias para el mensaje al servidor.
                string user    = username.Text;
                string pass    = password.Text;
                string mensaje = "100/" + user + "/" + pass;

                //Envío del mensaje al servidor.
                byte[] msg = System.Text.Encoding.ASCII.GetBytes(mensaje);
                server.Send(msg);

                //Se recibe la respuesta del servidor.
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                mensaje = Encoding.ASCII.GetString(msg2).Split('\0')[0];

                //Inicio de sesión correcto.
                if (mensaje == "100/Correct")
                {
                    //Stop a la musica de inicio.
                    player.Stop();

                    //Creación y transferencia de datos al formulaio principal.
                    prin = new Principal();
                    prin.setServer(server);
                    prin.setUser(user);
                    this.Hide();
                    prin.ShowDialog();

                    //Recibimos el estado del usuario del formulario principal por si este desea desconectarse del juego.
                    estado = prin.getStatus();

                    if (estado == 0)
                    {
                        //Mensaje de desconexión.
                        mensaje = "0/";
                        msg     = System.Text.Encoding.ASCII.GetBytes(mensaje);
                        server.Send(msg);

                        //Desconexión.
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                    }

                    this.Close();
                }

                //Se informa al usuario mediante un MesssageBox del motivo por el cual el inicio de sesión ha fallado.
                else
                {
                    //Usuario inexistente en la base de datos del juego.
                    if (mensaje == "100/NoUser")
                    {
                        MessageBox.Show("El usuario introducido no existe, porfavor regístrese.");
                    }

                    //La contraseña introducida por el usuarios es errónea.
                    else if (mensaje == "100/Incorrect")
                    {
                        MessageBox.Show("Contraseña incorrecta.");
                    }

                    //Mensaje de desconexión.
                    mensaje = "0/";
                    msg     = System.Text.Encoding.ASCII.GetBytes(mensaje);
                    server.Send(msg);

                    //Desconexión.
                    server.Shutdown(SocketShutdown.Both);
                    server.Close();
                }
            }
        }