Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


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

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

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