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:10] 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 =====
 +{{ :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.1696497033.txt.gz · Última modificación: 2023/10/05 09:10 por thejuanvisu