1

我正在用 Java 编写将数据存储在数据库服务器上的客户端。到目前为止,必须在客户端的设置中手动指定服务器的 IP 和端口。我听说,可以通过广播/多播/UDP自动确定数据库服务器的IP(我不熟悉这些概念)。问题:有没有办法检索本地网络中所有可用数据库服务器的 IP 地址?到目前为止,我正在使用 h2 数据库系统。

再见,沃尔夫冈

4

2 回答 2

1

在数据库服务器上使用 UDP 广播 :) 这将允许您在本地网络上的所有机器上获取广播,并且广播本身可以携带服务器的 IP 地址。要获取本地 IP,请使用InetAddress ip = InetAddress.getLocalHost();

来自http://java.sun.com/j2se/1.4.2/docs/api/java/net/DatagramSocket.html

UDP 广播发送始终在DatagramSocket. 为了接收广播数据包,aDatagramSocket应该绑定到通配符地址。DatagramSocket在一些实施方式中,当a被绑定到更具体的地址时,也可以接收广播包。

示例:DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888));相当于:DatagramSocket s = new DatagramSocket(8888);这两种情况都将创建一个DatagramSocket能够在 UDP 端口 8888 上接收广播。

编辑:您还可以查找网络上的所有 IP 地址;使用http://www.linglom.com/2007/02/20/how-to-find-subnet-number-ip-addresses-in-the-subnet-in-a-few-seconds/上的算法工作取出子网 IP,对其进行迭代,并测试每个 IP 是否是 H2 服务器(尝试连接)。您可能需要多个线程来加快发现速度。

于 2010-03-12T13:08:58.313 回答