Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


Barra lateral

Base de datos de juegos
GameBoy Advance (GBA)
Proyecto Integral de Ingeniería del Software
Metodologías Ágiles
Trabajo Fin De Grado
Guía Memoria TFG

Colecciones

Otros

dad:sockets

¡Esta es una revisión vieja del documento!


Sockets

Un Socket es un punto de conexión (Una Tubería o un Canal) entre 2 procesos e identificado por una IP y un Puerto. 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.

Cliente

Servidor

Implementación Cliente

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();

	}	
}

Implementación Servidor

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

Implementación Servidor continuo

Añadimos un nuevo método al que llamaremos ejecutar infinito:

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.ejecutar();
	}
}

Implementación cliente Continuo

Añadimos un nuevo método al que llamaremos ejecutar infinito:

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();

	}	
}
dad/sockets.1696500898.txt.gz · Última modificación: 2023/10/05 10:14 por thejuanvisu