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:34] – 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 ===== | ||
{{ : | {{ : | ||
+ | |||
===== Servidor ===== | ===== Servidor ===== | ||
Línea 12: | 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(); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | </ |