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:58] – 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 14: | Línea 14: | ||
| ===== 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(); | ||
| + | |||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| Línea 21: | Línea 70: | ||
| - | < | + | < |
| + | 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; | package jelouda; | ||
| Línea 42: | Línea 139: | ||
| //Lo hacemos contínuo | //Lo hacemos contínuo | ||
| - | Scanner sc = new Scanner(System.in); | + | //Scanner sc = new Scanner(System.in); |
| - | sc.nextLine(); | + | //sc.nextLine(); |
| Línea 58: | Línea 155: | ||
| pw.flush(); | pw.flush(); | ||
| System.out.println(" | 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){ | }catch(IOException e){ | ||
| e.printStackTrace(); | e.printStackTrace(); | ||
| Línea 65: | Línea 184: | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| Servidor server = new Servidor(); | Servidor server = new Servidor(); | ||
| - | server.ejecutar(); | + | server.ejecutarInfinito(); |
| } | } | ||
| } | } | ||
| Línea 71: | Línea 190: | ||
| </ | </ | ||
| - | ===== Implementación Servidor | + | ===== Implementación |
| + | 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 | ||
| + | |||
| + | while(true) { | ||
| + | lineaLeida | ||
| + | pw.println(lineaLeida); | ||
| + | pw.flush(); | ||
| + | } | ||
| + | |||
| + | |||
| + | }catch(IOException e){ | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | public static void main(String[] args) { | ||
| + | Cliente client | ||
| + | client.ejecutarInfinito(); | ||
| + | |||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||