Sistemas Cliente Servidor Multihilo - bleums/Redes-Comunicaciones GitHub Wiki

//Implementación del código

Clase ClienteBienvenida

` package cliente_servidor; import java.io.; import java.net.; import java.util.*;

public class ClienteBienvenida {

public static void main(java.lang.String[] args){

Socket cliente;
BufferedReader lectorC;
PrintWriter escritorC;
String nombre, respuesta, host;
int puerto;

try{
	//Se crea el socket y los flujos asociados
	cliente = new Socket("127.0.0.1", 8030);
	lectorC = new BufferedReader(new InputStreamReader(cliente.getInputStream()));
	escritorC = new PrintWriter(cliente.getOutputStream(), true);
	
	//Se obtiene el nombre del usuario y su host
	host = cliente.getLocalAddress().getHostName();
	puerto = cliente.getLocalPort();
	System.out.println("Digite su nombre: ");
	nombre = lectorC.readLine();
	
	/* Se despliega el puerto por pantalla, para verificar que concuerde con 
	 * el dado por el servidor
	 */
	System.out.println(puerto);
	
	// Se envían los datos al servidor
	escritorC.println(nombre);
	escritorC.println(host + "(puerto: " + puerto + ")");
	
	//Se recibe la respuesta del servidor y se muestra por consola
	respuesta = lectorC.readLine();
	System.out.println(respuesta);
	
	//Se cierran los flujos y finalmente el socket
	lectorC.close();
	escritorC.close();
	cliente.close();
	
}catch(IOException e){
	e.printStackTrace();
}

}

}

`


Clase HiloServidorBienvenidaRunnable

`package cliente_servidor;

import java.net.; import java.io.;

public class HiloServidorBienvenidaRunnable implements Runnable{

Socket cliente;
BufferedReader lectorHS;
PrintWriter escritorHS;

public HiloServidorBienvenidaRunnable(Socket solicitud) {
	super();
	cliente = solicitud;
}

@Override
public void run() {
	try{
		//Se crean los flujos asociados
		lectorHS = new BufferedReader(new InputStreamReader(cliente.getInputStream()));
		escritorHS = new PrintWriter(cliente.getOutputStream(), true);
		
		//Se recibe el nombre y host del usuario
		String nombre = lectorHS.readLine();
		String host = lectorHS.readLine();
		
		//Se crea el mensaje de respuesta y se envía al cliente
		String mensaje = "Hola, " + nombre + " en " + host + ", ¡bienvenido(a)!";
		escritorHS.println(mensaje);
		
		//Se cierran los flujos y el socket asociado a la solicitud
		lectorHS.close();
		escritorHS.close();
		cliente.close();
		
	}catch(IOException e){
		e.printStackTrace();
	}
	
}

} `


Clase HiloServidorBienvenidaThread

`package cliente_servidor; import java.net.; import java.io.;

public class HiloServidorBienvenidaThread extends Thread{

Socket cliente;
BufferedReader lectorHS;
PrintWriter escritorHS;

public HiloServidorBienvenidaThread(Socket solicitud){
	super();
	cliente = solicitud;
}

public void run(){
	try{
		//Se crean los flujos asociados
		lectorHS = new BufferedReader(new InputStreamReader(cliente.getInputStream()));
		escritorHS = new PrintWriter(cliente.getOutputStream(), true);
		 
		//Se recibe el nombre y host usuario
		String nombre = lectorHS.readLine();
		String host = lectorHS.readLine();
		
		//Se crea el mensaje de respuesta y se envía al cliente
		String mensaje = "Hola, "+ nombre + " en " + host + ", ¡bienvenido(a)!";
		escritorHS.println(mensaje);
		
		//Se cierran los flujos y el socket asociado a la solitud
		lectorHS.close();
		escritorHS.close();
		cliente.close();
		
	}catch(IOException e){
		e.printStackTrace();
	}
}

} `


Clase ServidorBienvenidaRunnable

`package cliente_servidor;

import java.net.; import java.io.;

public class ServidorBienvenidaRunnable {

public void main(java.lang.String[] args){

	try{
		ServerSocket servidor = new ServerSocket(8030);
		while(true){
			Socket c = servidor.accept();
			Thread hilo = new Thread(new HiloServidorBienvenidaThread(c));
			hilo.start();
		}
	}catch(IOException e){
		e.printStackTrace();
	}
}

} `


Clase ServidorBienvenidaThread

`package cliente_servidor;

import java.net.; import java.io.;

public class ServidorBienvenidaThread { public static void main(java.lang.String[] args){

try{
	ServerSocket servidor = new ServerSocket(8030);
	while(true){
		Socket c = servidor.accept();
		HiloServidorBienvenidaThread hilo = new HiloServidorBienvenidaThread(c);
		hilo.start();
	}
}catch(IOException e){
	e.printStackTrace();
}

} } `