`

用getAddress方法获得IP地址

    博客分类:
  • Java
阅读更多
getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。getAddress方法的定义如下:

public byte[] getAddress()


这个方法返回的byte数组是有符号的。在Java中byte类型的取值范围是-128〜127。如果返回的IP地址的某个字节是大于127的整数,在byte数组中就是负数。由于Java中没有无符号byte类型,因此,要想显示正常的IP地址,必须使用int或long类型。下面代码演示了如何利用getAddress返回IP地址,以及如何将IP地址转换成正整数形式。

package cn.com.songjy.test;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class MyIP {

	/**
	 * @param args
	 * @throws UnknownHostException 
	 */
	public static void main(String[] args) throws UnknownHostException {
		InetAddress address = InetAddress.getByName("www.baidu.com");
		//address = InetAddress.getLocalHost();
        byte ip[] = address.getAddress();
        for (byte ipSegment : ip)
            System.out.print(ipSegment + " ");
        System.out.println("");
        for (byte ipSegment : ip)
        {
            int newIPSegment = (ipSegment < 0) ? 256 + ipSegment : ipSegment;
            System.out.print(newIPSegment + " ");
        }

	}

}


引自:http://www.blogjava.net/nokiaguy/archive/2009/04/21/266732.html
分享到:
评论
1 楼 rensanning 2012-06-19  
看看这个完整的实现:
    private String getRemoteAddr(HttpServletRequest request) {
        String remoteIp = request.getHeader("X-Real-IP"); //nginx反向代理
        if (StringUtils.hasText(remoteIp)) {
            return remoteIp;
        } else {
            remoteIp = request.getHeader("x-forwarded-for");//apache反射代理
            if (StringUtils.hasText(remoteIp)) {
                String[] ips = remoteIp.split(",");
                for (String ip : ips) {
                    if (!"null".equalsIgnoreCase(ip)) {
                        return ip;
                    }
                }
            }
            return request.getRemoteAddr();
        }
    }

相关推荐

    java 获取计算机名与IP地址

    接下来,我们讨论如何获取IP地址。IP地址是互联网上设备的唯一标识,分为IPv4和IPv6两种类型。同样,我们可以使用`InetAddress`类来获取: ```java import java.net.InetAddress; import java.net....

    java 获取客户端ip mac地址

    #### 三、在Linux环境下获取IP地址 在Linux环境中,可以通过`InetAddress`类来获取主机的IP地址。但是需要注意的是,对于多网卡的情况,需要遍历所有网络接口来找到正确的IP地址。 **示例代码**: ```java public...

    使用IP地址控件显示和设置IP地址

    如果你需要读取当前的IP地址,可以使用 `GetAddress()` 函数: ```cpp DWORD dwIP[4]; m_ipAddressCtrl.GetAddress(dwIP); CString strIP; strIP.Format(_T("%d.%d.%d.%d"), dwIP[0], dwIP[1], dwIP[2], dwIP[3]); ...

    IP地址输入控件的用法

    如果需要获取用户输入的IP地址,可以使用`GetAddress`方法: ```cpp DWORD ip = 0; m_ipAddressCtrl.GetAddress(&ip); ``` 这里的`ip`变量将存储四个字节的IP地址,每个字节对应IP地址的一个部分。 此外,还可以...

    VC中IP地址控件的赋值与取值

    因此,在设置和获取IP地址时,需要使用htonl和ntohl函数来转换IP地址的字节序,确保数据在计算机和网络中保持一致。 总结以上,VC中IP地址控件的赋值与取值主要依赖于Windows API中提供的相关函数,通过正确的函数...

    用IP Address控件编辑IP地址

    例如,要获取IP地址,可以使用`GetAddress()`函数;要设置IP地址,可以使用`SetAddress()`函数: ```cpp // 获取IP地址 DWORD ip; m_ipAddress.GetAddress(&ip); // 设置IP地址 m_ipAddress.SetAddress(192, ...

    flex的air环境下获取本机ip地址

    在Flex的AIR(Adobe Integrated Runtime)环境中,获取本机IP地址和MAC地址是常见的需求之一,尤其是在开发网络应用时。本文将详细介绍如何在AIR环境下利用Flex SDK中的`flash.net.NetworkInfo`类来实现这一功能。 ...

    java ip 地址分析

    例如,你可以使用`getByName(String host)`方法来根据主机名获取IP地址,或者使用`getAllByName(String host)`来获取所有可能的IP地址(对于有多个IP的域名)。 ```java InetAddress address = InetAddress....

    CString与DWORD的相互转换(IP地址的转换)

    - 将DWORD类型的IP地址转换回字符串格式,通常使用`Format`方法实现。 - 通过位移操作获取每个字节的值,并使用`Format`方法构建字符串。 #### 二、具体实现步骤 ##### 1. CString转DWORD ```cpp CString strIP...

    java ip地址解析省市区运营商

    Java中的`java.net.InetAddress`类是处理IP地址的核心类,提供了获取主机名、IP地址以及校验IP地址有效性的方法。 3. **IP地址解析**: - `InetAddress.getByName(String host)`:通过主机名或IP地址获取`...

    IP Address控件编辑IP地址.rar vc++

    例如,`GetAddress()`函数可以获取IP地址的四部分十进制值,而`SetAddress()`函数则可以设置新的IP地址。这些值是以数组形式表示的,每个元素代表一个八位字节。 在用户交互时,你可能需要响应IP Address控件的某些...

    android 设置IP地址

    这些库提供了一些封装好的方法,可以简化设置IP地址的过程。 6. **系统服务和回调**:在Android中,通常需要监听网络状态变化,并在状态改变时更新IP设置。可以注册`BroadcastReceiver`来接收`CONNECTIVITY_ACTION`...

    根据ip查询城市名称(含IP地址库) java版本

    根据ip查询城市名称(含IP地址库) java版本 将QQWry.dat放到src下。。 调用如下接口方法 获取城市名称: String cityname = net.sololive.ip.IPSeeker.getAddress(ip);

    Java输出通过InetAddress获得的IP地址数组详细解析

    当你通过`InetAddress`获取IP地址时,返回的结果通常是一个`InetAddress`对象,但如果你需要处理IP地址的原始字节表示,你可以调用`getAddress()`方法,它会返回一个`byte[]`数组。然而,直接输出这个数组可能会遇到...

    获取android设备的IP和MAC

    在Android中,我们可以使用`ConnectivityManager`和`NetworkInterface`类来获取IP地址。以下是一个简单的示例代码片段: ```java ConnectivityManager connectivityManager = (ConnectivityManager) ...

    根据IP获得详细地区

    wry.dat放置web-inf目录下,导入ipaddress.1.0.jar 使用方法: 实例Ipaddress Ipaddress ip = new Ipaddress(); ip.getAddress("request获得的ip地址")

    获得单网卡的ip的源代码

    // 获取IP地址 byte[] ipAddr = addr.getAddress(); // 获取主机名 String hostname = addr.getHostName(); } catch (UnknownHostException e) { // 处理异常 } ``` 1. **InetAddress.getLocalHost()**:此方法...

    Java判断本机IP地址类型的方法

    此外,为了获取更全面的网络信息,我们还可以使用`NetworkInterface`类来获取本机的所有网络接口及其相关的IP地址。 总之,Java提供了丰富的网络编程API,使得开发者能够方便地处理IP地址和网络通信。通过`...

Global site tag (gtag.js) - Google Analytics