资讯专栏INFORMATION COLUMN

使用Java获取服务器IP地址

BicycleWarrior / 1308人阅读

public class NetworkInterfaceUtil {
    private static List getInterfaces() throws SocketException {
        return Collections.list(NetworkInterface.getNetworkInterfaces());
    }

    private static List getNonLoopBackInterfaces() throws SocketException {
        return getInterfaces().stream()
                              .filter(i -> Unchecked.supplier(() -> !i.isLoopback()).get())
                              .collect(toList());
    }

    public static List getIp4Addresses() throws SocketException {
        final List is = getNonLoopBackInterfaces();
        return is.stream().flatMap(i -> {
            final Enumeration addresses = i.getInetAddresses();
            final Builder builder = Stream.builder();
            while (addresses.hasMoreElements()) {
                final InetAddress ip = addresses.nextElement();
                if (!ip.isLoopbackAddress()) {
                    if (ip.getHostAddress().equalsIgnoreCase("127.0.0.1")) {
                        continue;
                    }
                    if (ip instanceof Inet6Address) {
                        continue;
                    }
                    if (ip instanceof Inet4Address) {
                        builder.add(ip.getHostAddress());
                    }
                }
            }
            return builder.build();
        }).collect(toList());
    }
}

write on 2017-1-4

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66434.html

相关文章

  • 干货:Java正确获取客户端真实IP方法整理

    摘要:但是在通过了,等反向代理软件就不能获取到客户端的真实地址了。下面是一个参考获取客户端地址的方法如果使用的是连接池,可以参考使用方法,但这个是经过多级代理的地址,需要自己处理下获取第一个。 showImg(https://segmentfault.com/img/remote/1460000015379119); 在JSP里,获取客户端的IP地址的方法是:request.getRemot...

    felix0913 评论0 收藏0
  • 重拾Java Network Programming(二)InetAddress

    摘要:前言今天,我将梳理在网络编程中很重要的一个类以及其相关的类。这类主机通常不需要外部互联网服务,仅有主机间相互通讯的需求。可以通过该接口获取所有本地地址,并根据这些地址创建。在这里我们使用阻塞队列实现主线程和打印线程之间的通信。 前言 今天,我将梳理在Java网络编程中很重要的一个类InetAddress以及其相关的类NetworkInterface。在这篇文章中将会涉及: InetA...

    daryl 评论0 收藏0
  • Java网络编程-你是GG还是MM?

    摘要:网络层主要将从下层接收到的数据进行地址例的封装与解封装。会话层通过传输层端口号传输端口与接收端口建立数据传输的通路。 第六阶段 网络编程 每一台计算机通过网络连接起来,达到了数据互动的效果,而网络编程所解决的问题就是如何让程序与程序之间实现数据的通讯与互动在吗?你是GG还是MM? (一) 网络模型概述 (1) 两大模型 网络模型一般是指: OSI(Open System Inter...

    Shihira 评论0 收藏0
  • 1、网络三要素及传输协议 2、实现UDP协议的发送端和接收端 3、实现TCP协议的客户端和务器 4

    摘要:应用层主要负责应用程序的协议,例如协议协议等。在计算机中,不同的应用程序是通过端口号区分的。区别在于,中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地发送数据。 01网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能,接下来针对这四层进行详细地讲解。 链路层:链路层是用于定义物理传输通道,通常是对...

    CastlePeaK 评论0 收藏0
  • JAVA网络程序设计基础(笔记)

    摘要:三端口与套接字端口指一台计算机只有单一的连接到网络的物理连接,所以的数据都通过此连接对内对外送达特定的计算机,这就是端口。三程序设计由上面可知基于的信息传递速度更快。接收数据包使用创建数据包套接字,绑定指定端口。 服务器 网络 客户机 第一部分 一.局域网与因特网 服务器是指提供信息的计算机或程序,...

    PAMPANG 评论0 收藏0

发表评论

0条评论

BicycleWarrior

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<