Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| dad:sockets [2023/10/05 09:52] – thejuanvisu | dad:sockets [2023/11/23 11:06] (actual) – thejuanvisu | ||
|---|---|---|---|
| Línea 3: | Línea 3: | ||
| En este caso serán 2 procesos ejecutándose simultáneamente conectados por un socket. | En este caso serán 2 procesos ejecutándose simultáneamente conectados por un socket. | ||
| {{ : | {{ : | ||
| - | Un socket funciona de una forma similar a la de los ficheros. | + | Un socket funciona de una forma similar a la de los ficheros. |
| ===== Cliente ===== | ===== Cliente ===== | ||
| - | {{ : | + | {{ : |
| Línea 13: | Línea 13: | ||
| ===== Implementación Cliente ===== | ===== Implementación Cliente ===== | ||
| - | {{ : | + | {{ : |
| + | <code java Cliente.java> | ||
| + | package jelouda; | ||
| + | |||
| + | import java.io.BufferedReader; | ||
| + | import java.io.IOException; | ||
| + | import java.io.InputStreamReader; | ||
| + | import java.io.OutputStreamWriter; | ||
| + | import java.io.PrintWriter; | ||
| + | import java.net.ServerSocket; | ||
| + | import java.net.Socket; | ||
| + | import java.util.Scanner; | ||
| + | |||
| + | public class Cliente { | ||
| + | public void ejecutar() { | ||
| + | try { | ||
| + | |||
| + | |||
| + | System.out.print(" | ||
| + | |||
| + | Socket socket = new Socket (" | ||
| + | |||
| + | System.out.println(" | ||
| + | |||
| + | |||
| + | BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// | ||
| + | PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));// | ||
| + | |||
| + | String cadenaRecibida = br.readLine(); | ||
| + | System.out.println(cadenaRecibida); | ||
| + | |||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | |||
| + | System.out.println(" | ||
| + | |||
| + | }catch(IOException e){ | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | public static void main(String[] args) { | ||
| + | Cliente client = new Cliente(); | ||
| + | client.ejecutar(); | ||
| + | |||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| ===== Implementación Servidor ===== | ===== Implementación Servidor ===== | ||
| {{ : | {{ : | ||
| + | |||
| + | |||
| + | <code java Servidor.java> | ||
| + | package jelouda; | ||
| + | |||
| + | import java.io.BufferedReader; | ||
| + | import java.io.IOException; | ||
| + | import java.io.InputStreamReader; | ||
| + | import java.io.OutputStreamWriter; | ||
| + | import java.io.PrintWriter; | ||
| + | import java.net.ServerSocket; | ||
| + | import java.net.Socket; | ||
| + | import java.util.Scanner; | ||
| + | |||
| + | public class Servidor { | ||
| + | public static int PUERTO = 5000;// | ||
| + | public void ejecutar() { | ||
| + | try { | ||
| + | |||
| + | System.out.println(" | ||
| + | ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); | ||
| + | |||
| + | Socket socket = serverSocket.accept(); | ||
| + | |||
| + | BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// | ||
| + | PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));// | ||
| + | |||
| + | String cadenaRecibida = br.readLine(); | ||
| + | |||
| + | |||
| + | |||
| + | pw.print(cadenaRecibida); | ||
| + | pw.flush(); | ||
| + | System.out.println(" | ||
| + | }catch(IOException e){ | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | Servidor server = new Servidor(); | ||
| + | server.ejecutar(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Implementación Servidor continuo ===== | ||
| + | Añadimos un nuevo método al que llamaremos ejecutar infinito: | ||
| + | {{ : | ||
| + | <code java Servidor.java> | ||
| + | package jelouda; | ||
| + | |||
| + | import java.io.BufferedReader; | ||
| + | import java.io.IOException; | ||
| + | import java.io.InputStreamReader; | ||
| + | import java.io.OutputStreamWriter; | ||
| + | import java.io.PrintWriter; | ||
| + | import java.net.ServerSocket; | ||
| + | import java.net.Socket; | ||
| + | import java.util.Scanner; | ||
| + | |||
| + | public class Servidor { | ||
| + | public static int PUERTO = 5000;// | ||
| + | public void ejecutar() { | ||
| + | try { | ||
| + | |||
| + | System.out.println(" | ||
| + | ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); | ||
| + | |||
| + | //Lo hacemos contínuo | ||
| + | //Scanner sc = new Scanner(System.in); | ||
| + | // | ||
| + | |||
| + | |||
| + | Socket socket = serverSocket.accept(); | ||
| + | |||
| + | BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// | ||
| + | PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));// | ||
| + | |||
| + | String cadenaRecibida = br.readLine(); | ||
| + | |||
| + | |||
| + | |||
| + | pw.print(cadenaRecibida); | ||
| + | pw.flush(); | ||
| + | System.out.println(" | ||
| + | }catch(IOException e){ | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public void ejecutarInfinito() { | ||
| + | try { | ||
| + | |||
| + | |||
| + | System.out.println(" | ||
| + | ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); | ||
| + | Socket socket = serverSocket.accept(); | ||
| + | BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// | ||
| + | PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));// | ||
| + | |||
| + | while(true) { | ||
| + | System.out.println(br.readLine()); | ||
| + | pw.println(br.readLine()); | ||
| + | pw.flush(); | ||
| + | } | ||
| + | |||
| + | |||
| + | }catch(IOException e){ | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | Servidor server = new Servidor(); | ||
| + | server.ejecutarInfinito(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Implementación cliente Continuo ===== | ||
| + | Añadimos un nuevo método al que llamaremos ejecutar infinito: | ||
| + | {{ : | ||
| + | <code java Cliente.java> | ||
| + | package jelouda; | ||
| + | |||
| + | import java.io.BufferedReader; | ||
| + | import java.io.IOException; | ||
| + | import java.io.InputStreamReader; | ||
| + | import java.io.OutputStreamWriter; | ||
| + | import java.io.PrintWriter; | ||
| + | import java.net.ServerSocket; | ||
| + | import java.net.Socket; | ||
| + | import java.util.Scanner; | ||
| + | |||
| + | public class Cliente { | ||
| + | public void ejecutar() { | ||
| + | try { | ||
| + | |||
| + | |||
| + | System.out.print(" | ||
| + | |||
| + | Socket socket = new Socket (" | ||
| + | |||
| + | System.out.println(" | ||
| + | |||
| + | |||
| + | BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// | ||
| + | PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));// | ||
| + | |||
| + | String cadenaRecibida = br.readLine(); | ||
| + | System.out.println(cadenaRecibida); | ||
| + | |||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | |||
| + | System.out.println(" | ||
| + | |||
| + | }catch(IOException e){ | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | public void ejecutarInfinito() { | ||
| + | try { | ||
| + | |||
| + | |||
| + | System.out.print(" | ||
| + | |||
| + | Socket socket = new Socket (" | ||
| + | |||
| + | System.out.println(" | ||
| + | |||
| + | |||
| + | BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// | ||
| + | PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));// | ||
| + | |||
| + | String lineaLeida =""; | ||
| + | Scanner teclado = new Scanner(System.in); | ||
| + | |||
| + | while(true) { | ||
| + | lineaLeida = teclado.nextLine(); | ||
| + | pw.println(lineaLeida); | ||
| + | pw.flush(); | ||
| + | } | ||
| + | |||
| + | |||
| + | }catch(IOException e){ | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | public static void main(String[] args) { | ||
| + | Cliente client = new Cliente(); | ||
| + | client.ejecutarInfinito(); | ||
| + | |||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||