public Server(int Port) {
		dbStruct = new DBStructure();
		try {
			/* client-server port assignment */
			
			server_Socket = new ServerSocket(Port);
			//port yang didapat menjadi port number ke client
			to_client_port = server_Socket.getLocalPort();
			
			/* server-server port assignment */
			int port_number;
			//get random port number between Protocol.MIN_SERVER2CLIENT_PORTNUMBER and Protocol.MAX_SERVER2CLIENT_PORTNUMBER
			port_number = (int)(Math.random() * (Protocol.MAX_SERVER2SERVER_PORTNUMBER - Protocol.MIN_SERVER2SERVER_PORTNUMBER + 1));
			while(Protocol.isPortInUse(InetAddress.getLocalHost().getHostAddress(), port_number) == true){
				port_number = (int)(Math.random() * (Protocol.MAX_SERVER2SERVER_PORTNUMBER - Protocol.MIN_SERVER2SERVER_PORTNUMBER + 1));
			}
			server_Socket_toServer = new ServerSocket(Protocol.MIN_SERVER2SERVER_PORTNUMBER + port_number);
			//port yang didapat menjadi port number ke server lain
			to_server_port = server_Socket_toServer.getLocalPort();
			System.out.println("(will) Listening on server2server port " + server_Socket_toServer.getLocalPort() + "...");
			
			//looking for available connection to ANOTHER server
			port_number = Protocol.getAvailablePortNumber(InetAddress.getLocalHost().getHostAddress(),Protocol.MIN_SERVER2SERVER_PORTNUMBER,Protocol.MAX_SERVER2SERVER_PORTNUMBER,to_server_port);
			if(port_number > Protocol.MAX_SERVER2SERVER_PORTNUMBER){
				System.out.println("All port numbers are available. This is the FIRST server in THIS ADDRESS");
				return;
			}
			else{
				System.out.println("there is a server listening to port " + port_number);
				//TODO tambahin update server baru
			}
		}
		catch (Exception e){
			System.out.println("coy, ada exception");
			e.printStackTrace();
		}
	}