| 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*/}}
|
|
|
|
|
| }
|
| }
|