import java.net.*; import java.io.*; public class TCPServer { public static void main (String args[]) { try{ int serverPort1 = 7896; int serverPort2 = 7897; int serverPort3 = 7898; ServerSocket listenSocket1 = new ServerSocket(serverPort1); ServerSocket listenSocket2 = new ServerSocket(serverPort2); ServerSocket listenSocket 3= new ServerSocket(serverPort3); while(true) { Socket clientSocket1 = listenSocket1.accept(); Connection c1 = new Connection(clientSocket1); Socket clientSocket2 = listenSocket2.accept(); Connection c2 = new Connection(clientSocket2); Socket clientSocket3 = listenSocket1.accept(); Connection c3 = new Connection(clientSocket3); } } catch(IOException e) {System.out.println("Listen socket:"+e.getMessage());} } } class Connection extends Thread { DataInputStream in1; DataOutputStream out1; DataInputStream in2; DataOutputStream out2; DataInputStream in3; DataOutputStream out3; Socket clientSocket1; Socket clientSocket2; Socket clientSocket3; public Connection (Socket ClientSocket1,Socket ClientSocket2,Socket ClientSocket3) { try { clientSocket1 = ClientSocket1; clientSocket2 = ClientSocket2; clientSocket3 = ClientSocket3; in1 = new DataInputStream( clientSocket1.getInputStream()); out1 =new DataOutputStream( clientSocket1.getOutputStream()); in2 = new DataInputStream( clientSocket2.getInputStream()); out2 =new DataOutputStream( clientSocket2.getOutputStream()); in3 = new DataInputStream( clientSocket3.getInputStream()); out3 =new DataOutputStream( clientSocket3.getOutputStream()); this.start(); } catch(IOException e) {System.out.println("Connection:"+e.getMessage());} } public void run(){ try { System.out.println("[Servidor] Servidor central iniciado"); boolean ocupado=false; while(true) { String data1 = in1.readUTF(); if(data1=="DAME_TESTIGO") { ocupado=true; System.out.println("[Servidor] Testigo concedido a Cliente 1\n"); Thread.sleep(3000); } ocupado=false; String data2 = in2.readUTF(); else if(data2=="DAME_TESTIGO" && ocupado= false) { ocupado= true; System.out.println("[Servidor] Testigo concedido a Cliente 2\n"); Thread.sleep(4000); } String data3 = in3.readUTF(); else(data3=="DAME_TESTIGO") { ocupado=true; System.out.println("[Servidor] Testigo concedido a Cliente 3\n"); Thread.sleep(5000); } out1.writeUTF("ok"); out2.writeUTF("ok"); out3.writeUTF("ok"); } }catch (EOFException e){System.out.println("EOF:"+e.getMessage()); } catch(IOException e) {System.out.println("readline:"+e.getMessage()); } finally{ try {clientSocket.close();}catch (IOException e){/*close failed*/}} } }