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:26] 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 =====
 {{ :dad:imagen_2023-10-05_110936729.png |}} {{ :dad:imagen_2023-10-05_110936729.png |}}
 +
 +===== Implementación Cliente =====
 +{{ :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.1696498014.txt.gz · Última modificación: 2023/10/05 09:26 por thejuanvisu