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:58] 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 =====
Línea 14: Línea 14:
 ===== Implementación Cliente ===== ===== Implementación Cliente =====
 {{ :dad:imagen_2023-10-05_115043040.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>
  
  
Línea 21: Línea 70:
  
  
-<code>+<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; 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("Fin del Servidor");  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){  }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:
 </code> </code>
  
-===== Implementación Servidor continuo =====+===== 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.1696499934.txt.gz · Última modificación: 2023/10/05 09:58 por thejuanvisu