如何检查java中是否存在IP?

时间:2011-11-28 13:20:19

标签: java sockets ip port host

我的网络中有5个设备使用不同的IP地址。我希望连接到这些设备,并在我的网络中可用时通过TCP / IP套接字从中获取数据。 如何检查它们是否在java中可用?

public void setUpConnection() {
    try {
        Socket client = new Socket(hostIp, hostPort);
        socketReader = client.getInputStream();
        socketWriter = new PrintWriter(client.getOutputStream());
    } catch (UnknownHostException e) {
        System.out.println("Error setting up socket connection: unknown host at " +   hostIp);
        System.out.println("host: " + hostIp + "port: " + hostPort);
    } catch (IOException e) {
        System.out.println("Error setting up socket connection: " + e);
        System.out.println("host: " + hostIp + "port:" + hostPort);
    }
}

4 个答案:

答案 0 :(得分:17)

InetAddress.getByName(host).isReachable(timeOut);

进一步参考here

答案 1 :(得分:1)

如果您只想检查主机是否已启动,可以使用isReachable

答案 2 :(得分:1)

对于纯Java,基本上有两种方法:

  1. 活动:作为您的示例,但是通过主机上的所有端口和所有绑定IP循环

  2. 被动:在预定义的端口上运行一个小型服务器,另一个在它们可用时自行注册。

  3. isReachable可能会因文档中所述的很多原因而失败。

答案 3 :(得分:0)

TCP / IP是一种握手模式。与这5个设备中的任何一个建立连接。您的客户端和收件人客户端都应该活着。首先,如果可能,请使用套接字NIO 。你能编写客户端逻辑,以便每当客户端上线时,首先在数据库中输入其ip和端口,并尝试从数据库获取其他可用的ip和端口,并尝试与它们建立连接。每当任何客户端设备无法访问时,从数据库中删除该条目。示例:当第一台设备上线时,只有一个套接字将被创建,因为当第二台设备上线时,数据库中只有一个条目有两个条目,一个是该设备的IP和端口,第二个条目属于到了第一个出现的设备。

由于 Sunil Kumar Sahoo