Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


dad:sockets

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
dad:sockets [2023/10/05 09:34] thejuanvisudad: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.
 {{ :dad:socket.png |}} {{ :dad:socket.png |}}
-Un socket funciona de una forma similar a la de los ficheros.+Un socket funciona de una forma similar a la de los ficheros. Para leer y escribir utilizaremos un Buffer (PrintWritter y BufferedReader)
  
 ===== Cliente ===== ===== Cliente =====
 {{ :dad:imagen_2023-10-05_110539888.png |}} {{ :dad:imagen_2023-10-05_110539888.png |}}
 +
  
 ===== Servidor ===== ===== Servidor =====
Línea 12: Línea 13:
  
 ===== Implementación Cliente ===== ===== Implementación Cliente =====
-{{ :dad:imagen_2023-10-05_113335627.png |}}+{{ :dad:imagen_2023-10-05_115043040.png |}} 
 +<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("Lanzando conexión...."); 
 +  
 + Socket socket = new Socket ("127.0.0.1", Servidor.PUERTO);//Conectamos al servidor 
 +  
 + System.out.println("[OK]"); 
 +  
 +  
 + BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Bufer de lectura 
 + PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer de escritura 
 +  
 + String cadenaRecibida = br.readLine(); 
 + System.out.println(cadenaRecibida); 
 +  
 + pw.println("cadena recibida" + cadenaRecibida); 
 + pw.flush(); 
 +  
 + System.out.println("Fin del Cliente"); 
 +  
 + }catch(IOException e){ 
 + e.printStackTrace(); 
 +
 +
 +  
 +  
 +  
 + public static void main(String[] args) { 
 + Cliente client = new Cliente(); 
 + client.ejecutar(); 
 + 
 + }  
 +
 + 
 +</code> 
  
 ===== Implementación Servidor ===== ===== Implementación Servidor =====
-{{ :dad:imagen_2023-10-05_112603453.png |}}+{{ :dad:imagen_2023-10-05_115144753.png |}} 
 + 
 + 
 +<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;//Indicamos el puerto del servidor 
 + public void ejecutar() { 
 + try { 
 +  
 + System.out.println("Lanzando Servidor..."); 
 + ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); 
 +  
 + Socket socket = serverSocket.accept(); 
 +  
 + BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Buffer entrada 
 + PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer salida 
 +  
 + String cadenaRecibida = br.readLine(); 
 +  
 +  
 +  
 + pw.print(cadenaRecibida); 
 + pw.flush(); 
 + System.out.println("Fin del Servidor"); 
 + }catch(IOException e){ 
 + e.printStackTrace(); 
 +
 +
 +  
 + public static void main(String[] args) { 
 + Servidor server = new Servidor(); 
 + server.ejecutar(); 
 +
 +
 + 
 +</code> 
 + 
 +===== Implementación Servidor continuo ===== 
 +Añadimos un nuevo método al que llamaremos ejecutar infinito: 
 +{{ :dad:imagen_2023-10-05_120946334.png |}} 
 +<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;//Indicamos el puerto del servidor 
 + public void ejecutar() { 
 + try { 
 +  
 + System.out.println("Lanzando Servidor..."); 
 + ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); 
 +  
 + //Lo hacemos contínuo 
 + //Scanner sc = new Scanner(System.in); 
 + //sc.nextLine(); 
 +  
 +  
 + Socket socket = serverSocket.accept(); 
 +  
 + BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Buffer entrada 
 + PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer salida 
 +  
 + String cadenaRecibida = br.readLine(); 
 +  
 +  
 +  
 + pw.print(cadenaRecibida); 
 + pw.flush(); 
 + System.out.println("Fin del Servidor"); 
 + }catch(IOException e){ 
 + e.printStackTrace(); 
 +
 +
 +  
 + public void ejecutarInfinito() { 
 + try { 
 +  
 +  
 + System.out.println("Lanzando Servidor..."); 
 + ServerSocket serverSocket = new ServerSocket(Servidor.PUERTO); 
 + Socket socket = serverSocket.accept(); 
 + BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Buffer entrada 
 + PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer salida 
 +  
 + 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(); 
 +
 +
 + 
 +</code> 
 + 
 +===== Implementación cliente Continuo ===== 
 +Añadimos un nuevo método al que llamaremos ejecutar infinito: 
 +{{ :dad:imagen_2023-10-05_120728806.png |}} 
 +<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("Lanzando conexión...."); 
 +  
 + Socket socket = new Socket ("127.0.0.1", Servidor.PUERTO);//Conectamos al servidor 
 +  
 + System.out.println("[OK]"); 
 +  
 +  
 + BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Bufer de lectura 
 + PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer de escritura 
 +  
 + String cadenaRecibida = br.readLine(); 
 + System.out.println(cadenaRecibida); 
 +  
 + pw.println("cadena recibida" + cadenaRecibida); 
 + pw.flush(); 
 +  
 + System.out.println("Fin del Cliente"); 
 +  
 + }catch(IOException e){ 
 + e.printStackTrace(); 
 +
 +
 +  
 +  
 + public void ejecutarInfinito() { 
 + try { 
 +  
 +  
 + System.out.print("Lanzando conexión...."); 
 +  
 + Socket socket = new Socket ("127.0.0.1", Servidor.PUERTO);//Conectamos al servidor 
 +  
 + System.out.println("[OK]"); 
 +  
 +  
 + BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Bufer de lectura 
 + PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//Buffer de escritura 
 +  
 + 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(); 
 + 
 + }  
 +
 + 
 +</code> 
dad/sockets.1696498464.txt.gz · Última modificación: 2023/10/05 09:34 por thejuanvisu