Java - Problema de servidor y un cliente

 
Vista:
sin imagen de perfil
Val: 20
Ha disminuido su posición en 41 puestos en Java (en relación al último mes)
Gráfica de Java

Problema de servidor y un cliente

Publicado por Saint (12 intervenciones) el 15/06/2020 03:06:39
Hola tengo el siguiente código de la conversacion de un cliente y un servidor y mi problema es en como puedo hacer para que se repita mi código hasta que mi cliente diga la palabra "adiós", el servidor siempre tiene que contestar a los mensajes del cliente con un "Esto es una respuesta automatica a su mensaje" y como podria guardar en un archivo toda su conversacion.
-------------------------------------------------------------------------------------------------------------------------------------------------------
Código de la clase servidor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;:
 
public class Servidor {
 
    private int puerto;
 
    public Servidor() {
    }
 
    public Servidor(int puerto) {
        this.puerto = puerto;
    }
 
    public void iniciar(){
 
        try {
            System.out.println("Iniciando el servidor ...");
 
            ServerSocket serverSocket = new ServerSocket(this.puerto);
            System.out.println("Esperando conexiones ...");
 
            Socket clienteSocket = serverSocket.accept();
            System.out.println("Cliente conectado exitosamente");
 
            BufferedReader entrada = new BufferedReader(new InputStreamReader(clienteSocket.getInputStream()));
 
            while(entrada.readLine() == "adios"){
                System.out.println("Mensaje enviado por parte del cliente: "+entrada.readLine());
 
                System.out.println("Mensaje enviado por parte del servidor: Esto es una respuesta automatica a su mensaje");
            }
 
            entrada.close();
            clienteSocket.close();
            serverSocket.close();
 
        } catch (IOException ex) {
            Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
        }
 
    }
 
}


Código de la clase cliente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class Cliente {
 
    private int puerto;
    private String host;
 
    public Cliente() {
    }
 
    public Cliente(int puerto, String host) {
        this.puerto = puerto;
        this.host = host;
    }
 
    public void iniciarCliente(){
        try {
 
            System.out.println("Iniciando cliente ...");
            Socket clienteSocket = new Socket(this.host, this.puerto);
 
            System.out.println("Cliente conectado exitosamente ...");
 
            PrintWriter salida = new PrintWriter(clienteSocket.getOutputStream(), true);
            salida.println("Hola servidor, soy un cliente =)");
            salida.println("Como estas");
            salida.println("Que eres");
            salida.println("Ya me voy");
            salida.println("adios");
            System.out.println("Datos enviados correctamente ...");
 
            salida.close();
            clienteSocket.close();
 
        } catch (IOException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
 
 
    }
 
}


Código main de la clase servidor:

1
2
3
4
5
6
7
8
9
public class Test {
    public static void main(String[] args) {
 
        Servidor miServidor = new Servidor(9000);
 
        miServidor.iniciar();
 
    }
}


Código main de la clase cliente:

1
2
3
4
5
6
7
8
9
10
11
public class PrincipalCliente {
 
    public static void main(String[] args) {
 
        Cliente c = new Cliente(9000,"LocalHost");
 
        c.iniciarCliente();
 
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de servidor y un cliente

Publicado por Franklin (179 intervenciones) el 15/06/2020 14:08:22
Hmm puede que te sirva este video: https://www.youtube.com/watch?v=DUSGrlNyK7g&t=3s
Ya con eso puedes enviar Mensajes entre cliente - Servidor, sería cuestión de adaptar que en vez de ser un mensaje ingresado por el usuario; el servidor al recibir cada mensaje obtienes el usuario de donde proviene y le mandas el string único.

En cuanto al archivo, Puedes tener un método que luego de responder el mensaje automatico uses el string recibido y lo anexe a un txt predefinido.

No creo que haga falta explicar como explicar como escribir en un txt, en google hay mas de un ejemplo.

Con el video creo que te haces lo que necesitas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de servidor y un cliente

Publicado por Costero (148 intervenciones) el 15/06/2020 20:14:12
Para escribir a la txt sigue el consejo de @Franklin.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class Servidor {
 
    private int puerto;
 
    public Servidor() {
    }
 
    public Servidor(int puerto) {
        this.puerto = puerto;
    }
 
    public void iniciar() {
 
        try {
            System.out.println("Iniciando el servidor ...");
 
            ServerSocket serverSocket = new ServerSocket(this.puerto);
            System.out.println("Esperando conexiones ...");
 
            Socket clienteSocket = serverSocket.accept();
            System.out.println("Cliente conectado exitosamente");
 
            BufferedReader entrada = new BufferedReader(new InputStreamReader(clienteSocket.getInputStream()));
            PrintWriter salida = new PrintWriter(clienteSocket.getOutputStream(), true);
 
            String inputLine;
            while ((inputLine = entrada.readLine()) != null) {
                if ("adios".equals(inputLine)) {
                    salida.println("Chao");
                    break;
                }
                System.out.println("Mensaje enviado por parte del cliente: " + inputLine);
                salida.println("Mensaje enviado por parte del servidor: Esto es una respuesta automatica a su mensaje");
            }
 
            System.out.println("It is null value");
 
            clienteSocket.close();
            serverSocket.close();
 
        } catch (IOException ex) {
            Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
        }
 
    }
 
 
    public static void main(String[] args) {
        Servidor miServidor = new Servidor(9000);
        miServidor.iniciar();
    }
 
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class Cliente {
 
    private int puerto;
    private String host;
 
    public Cliente() {
    }
 
    public Cliente(int puerto, String host) {
        this.puerto = puerto;
        this.host = host;
    }
 
    public void iniciarCliente(){
        try {
 
            System.out.println("Iniciando cliente ...");
            Socket clienteSocket = new Socket(this.host, this.puerto);
 
            System.out.println("Cliente conectado exitosamente ...");
 
            PrintWriter salida = new PrintWriter(clienteSocket.getOutputStream(), true);
            BufferedReader entrada = new BufferedReader(new InputStreamReader(clienteSocket.getInputStream()));
 
            salida.println("Hola servidor, soy un cliente");
            System.out.println("1:) " + entrada.readLine());
 
            salida.println("Como estas");
            System.out.println("2:) " + entrada.readLine());
 
            salida.println("Que eres");
            System.out.println("3:) " + entrada.readLine());
 
            salida.println("Ya me voy");
            System.out.println("4:) " + entrada.readLine());
 
            salida.println("adios");
            System.out.println("5:) " + entrada.readLine());
 
            System.out.println("Datos enviados correctamente ...");
 
            salida.close();
            clienteSocket.close();
 
        } catch (IOException ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
 
 
    }
 
    public static void main(String[] args) {
        Cliente c = new Cliente(9000, "LocalHost");
        c.iniciarCliente();
    }
 
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 20
Ha disminuido su posición en 41 puestos en Java (en relación al último mes)
Gráfica de Java

Problema de servidor y un cliente

Publicado por Saint (12 intervenciones) el 16/06/2020 15:50:57
Muchas gracias por su ayuda
.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar