Está en la página 1de 2

// Programa Servidor

import java.util.concurrent.*;
import java.net.*;
import java.io.*;
import java.util.Scanner;

public class servidor{


public int num_of_con=0;
public static void main(String[] args) throws Exception{

Semaphore sem = new Semaphore(2);


Socket servicioCliente = null;
ServerSocket servidor = new ServerSocket(8000);
int indice=0;
//String[] numeros_to_convert = {"1010101", "100100", "110101"};
//Scanner sc = new Scanner(System.in);
//String number;
while( true ){
try{
// ServerSocket me da el Socket

servicioCliente = servidor.accept();
Compartido.contador++;
System.out.println("************* IMPRIMIENDO "+Compartido.contador);
// Instancio un Thread
(new Tarea(sem,servicioCliente)).start();

catch(Exception e){

System.err.println("Error aquí: " + e.getMessage());

}
}
}
static class Tarea extends Thread{
Semaphore sem;
Socket servicioCliente = null;
ObjectInputStream entradaServidor = null;;
ObjectOutputStream salidaServidor = null;
String num_to_convert;
public Tarea(Semaphore s,Socket socket){
sem=s;
this.servicioCliente = socket;

public void run(){


try{

sem.acquire();
Scanner sc = new Scanner(System.in);
System.out.println("Ingresa un numero: ");
String number = sc.nextLine();
//sc.close();
System.out.println("Se conectaron desde la IP: "+servicioCliente.getInetAddress());
entradaServidor = new ObjectInputStream(servicioCliente.getInputStream());
salidaServidor = new ObjectOutputStream(servicioCliente.getOutputStream());
// Envio el numero al cliente para que lo convierta
salidaServidor.writeObject(number);
// Leo el resultado que envia el cliente

String suma1 = (String)entradaServidor.readObject();


System.out.println("suma1= "+suma1+" desde "+servicioCliente.getInetAddress());
String suma2 = (String)entradaServidor.readObject();
System.out.println("suma2= "+suma2+" desde "+servicioCliente.getInetAddress());
String suma3 = (String)entradaServidor.readObject();
System.out.println("suma3= "+suma3+" desde "+servicioCliente.getInetAddress() );

// Muestro la respuesta del cliente


}catch(Exception e){

System.err.println("No, Error aquí: " + e.getMessage());

finally{
try{

if( salidaServidor !=null ) salidaServidor.close();


if( entradaServidor !=null ) entradaServidor.close();
if( servicioCliente != null ) servicioCliente.close();
System.out.println("Conexion cerrada!");
sem.release();
Compartido.contador--;

}catch(Exception e){

System.err.println("ahi no, Error aqui : " + e.getMessage());

}
}
}
}
class Compartido {

static int contador = 0;

También podría gustarte