2010-03-12 4 views
1

데이터베이스 서버에 데이터를 저장하는 클라이언트를 Java로 작성하고 있습니다. 지금까지 서버의 IP 및 포트는 클라이언트의 설정에서 수동으로 지정되어야합니다. 나는 브로드 캐스트/멀티 캐스트/UDP를 통해 데이터베이스 서버의 IP를 자동으로 결정할 수 있다고 들었다. (나는 이러한 개념에 익숙하지 않다.) 질문 : 로컬 네트워크에서 사용 가능한 모든 데이터베이스 서버의 IP 주소를 검색하는 방법이 있습니까? 지금까지 h2 데이터베이스 시스템으로 작업하고 있습니다.Java에서 UDP를 통해 데이터베이스 서버 IP를 결정하는 방법

안녕, 볼프강

답변

1
데이터베이스 서버에

사용 UDP 브로드 캐스트 :이 로컬 네트워크에있는 모든 컴퓨터에서 방송을 선택할 수 있도록하며, 방송 자체가 서버의 IP 주소를 수행 할 수 있습니다 . 로컬 IP를 얻기 위해, http://java.sun.com/j2se/1.4.2/docs/api/java/net/DatagramSocket.html에서 InetAddress ip = InetAddress.getLocalHost();

를 사용

UDP 브로드 캐스트는 항상 DatagramSocket에 사용할 수 있습니다 보냅니다. 브로드 캐스트 패킷을 수신하려면 DatagramSocket을 와일드 카드 주소에 바인딩해야합니다. 일부 구현 예에서, 방송 패킷은 또한 DatagramSocket이보다 특정한 어드레스에 바인딩 될 때 수신 될 수있다.

예 : DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888)); 동등에 : 두 경우 모두가 UDP 포트에 방송을 수신 할 수 DatagramSocket 수를 생성합니다 DatagramSocket s = new DatagramSocket(8888); 8888

편집 : 당신은 또한 네트워크의 모든 IP 주소를 손가락 수있다; http://www.linglom.com/2007/02/20/how-to-find-subnet-number-ip-addresses-in-the-subnet-in-a-few-seconds/에서 알고리즘을 사용하여 서브넷 IP를 처리하고, 반복하고, 각각 H2 서버가되는지 테스트하십시오 (연결 시도). 발견 속도를 높이려면 여러 스레드가 필요할 수 있습니다.

관련 문제