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(); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||