如何确定数据库服务器IP通过UDP在Java
-
19-09-2019 - |
题
我写客户在Java,将数据存储在一个数据库服务器。迄今为止,知识产权和港口的服务器已被指定在客户的设置。我已经听到,可能的话,可以自动确定的IP数据库服务器,通过广播//UDP(我不熟悉这些概念)。问题:有没有方法检索的IP地址的所有可用的数据库服务器,在本地网络?我的工作与h2数据库系统为止。
再见, 沃尔夫冈*
解决方案
使用UDP广播节目的数据库服务器:)此将允许你选择了广播的所有机关的地方网络和广播自己可以随身携带的IP地址的服务器。为获取当地知识产权,使用 InetAddress ip = InetAddress.getLocalHost();
从 http://java.sun.com/j2se/1.4.2/docs/api/java/net/DatagramSocket.html:
UDP广播发送总是上启用了一个 DatagramSocket
.为了收到的广播包一个 DatagramSocket
应当开通配地址。在一些实现、广播分组也可以收到时的 DatagramSocket
定更具体的地址。
例如: 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/ 工作的子网IPs,迭代他们,并测试各作为一个H2服务器(尝试连接).你可能想多线程,以加快的发现。
其他提示
您可能还需要考虑使用卓悦 /零配置库为此,而不是再造方的动态服务发现自己的解决方案。