`
lysj102289
  • 浏览: 7625 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

在JAVA中,服务端获取客户端真正的IP地址

    博客分类:
  • java
阅读更多
转自:http://www.cnblogs.com/xjh5201314/p/6591174.html
1 public static String getIpAddress(HttpServletRequest request){
2        
3         String ipAddress = request.getHeader("x-forwarded-for");
4        
5         if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
6             ipAddress = request.getHeader("Proxy-Client-IP");
7         }
8         if (ipAddress == null || ipAddress.length() == 0 || "unknow".equalsIgnoreCase(ipAddress)) {
9             ipAddress = request.getHeader("WL-Proxy-Client-IP");
10         }
11         if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
12             ipAddress = request.getRemoteAddr();
13            
14             if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){
15                 //根据网卡获取本机配置的IP地址
16                 InetAddress inetAddress = null;
17                 try {
18                     inetAddress = InetAddress.getLocalHost();
19                 } catch (UnknownHostException e) {
20                     e.printStackTrace();
21                 }
22                 ipAddress = inetAddress.getHostAddress();
23             }
24         }
25        
26         //对于通过多个代理的情况,第一个IP为客户端真实的IP地址,多个IP按照','分割
27         if(null != ipAddress && ipAddress.length() > 15){
28             //"***.***.***.***".length() = 15
29             if(ipAddress.indexOf(",") > 0){
30                 ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
31             }
32         }
33        
34         return ipAddress;
35     }
方法最下方的if()语句,是为了防止使用tomcat服务器,在本地测试的时候,得出的ip地址是127.0.0.1的问题。
引用自:多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
分享到:
评论

相关推荐

    获取客户端真实IP(支持代理服务器)

    在这种情况下,原始的客户端IP地址信息被记录在HTTP请求头中的`X-Forwarded-For`字段里。 #### 三、解决方案 为了准确获取客户端的真实IP地址,我们可以采用以下几种方法: ##### 方法一:基本实现 首先,检查...

    java socket服务端和客户端

    在这个"java socket服务端和客户端"的项目中,我们可以探讨以下几个关键知识点: 1. **Socket类和ServerSocket类**: - `Socket`类代表了网络上的一个连接,它用于建立客户端到服务器的连接,并进行数据传输。通过...

    java编程实现获取服务器IP地址及MAC地址的方法

    在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...

    VNC服务端 java客户端

    在实际使用中,Java客户端通常具有简洁的用户界面,用户只需输入服务端的IP地址和端口号,以及认证信息,就能实现远程连接。 在实际应用中,VNC常用于系统维护、技术支持、远程办公等场景。例如,IT管理员可以通过...

    java tcp服务端与客户端实例

    - 使用`Socket`类创建一个连接到指定IP地址和端口的客户端,通过`Socket(String host, int port)`构造方法指定服务器的地址和端口。 - 同样通过`Socket`对象的输入流和输出流进行数据交互。 在这个实例中,采用...

    Java中实现服务端和客户端传输文件

    在Java编程环境中,服务端和客户端之间的文件传输是常见的需求,尤其在分布式系统或网络应用中。本示例主要涉及的是使用Java的Socket编程来实现这一功能。Socket编程是网络编程的基础,它允许两个网络应用程序之间...

    java实现tcp客户端发送服务端解析程序

    客户端创建`Socket`对象,指定服务器的IP地址和端口号,然后获取输出流以发送数据。一旦数据被写出,服务器端就需要接收并解析这些数据。 在服务器端,我们需要创建一个`ServerSocket`来监听特定端口上的连接请求:...

    Java服务端和客户端交互实例

    在Java编程中,服务器端和客户端的交互是网络应用程序的核心部分。这个实例展示了如何通过Java实现这一过程。在这个实例中,我们有两个主要组件:服务器端(Server)和客户端(Client)。下面将详细介绍这两个组件...

    java tcp/ip 通讯服务端和客户端

    在压缩包文件“src”中,可能包含了服务端和客户端的Java源代码文件,你可以查看这些文件以获取更具体的实现细节,包括异常处理、数据编码解码、关闭流和资源释放等。 总的来说,Java TCP/IP通信涉及网络编程的基本...

    java_socket服务端和客户端编程

    Java Socket服务端与客户端编程是Java网络编程中的基础部分,主要用于实现两台计算机之间的通信。在本场景中,客户端向服务器发送一个字符串,服务器接收到这个字符串后将其转化为大写并回显。以下是对这个过程的...

    tcp.rar_java socket 服务端_java tcp socket_服务端 客户端

    在IT行业中,网络编程是不可或缺的一部分,特别是在Java领域。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。Java的Socket类提供了对TCP协议的支持,使得开发者能够构建服务器端...

    delphi客户端连接JAVA服务端

    使用TIdTCPClient组件,设置其Host属性为JAVA服务端的IP地址,Port属性为服务端监听的端口号,然后调用Connect方法建立连接。 2. ** 数据编码与解码**:由于Delphi和Java可能使用不同的数据序列化方式,如Delphi常用...

    java socket网络编程代码(服务端和客户端)

    在本实例中,我们有两个关键文件:`server.java`和`client.java`,分别代表服务端和客户端的实现。 **服务端(server.java)** 服务端通常扮演着等待连接、接收请求并处理这些请求的角色。在Java中,我们可以使用`...

    Tcp服务端与客户端的JAVA实例源代码

    在Java中,实现TCP服务端和客户端通信主要涉及到`java.net.Socket`和`java.net.ServerSocket`这两个类。服务端使用`ServerSocket`创建监听特定端口的对象,等待客户端的连接请求。一旦有客户端连接,服务端就会创建...

    java_socket服务端和客户端编程.doc

    Java Socket服务端和客户端编程是Java网络编程中的核心部分,主要涉及TCP/IP协议栈和客户机/服务器(C/S)架构。TCP/IP协议是互联网通信的基础,它由多个层次组成,其中IP层负责主机定位和路由,而TCP层提供可靠的...

    android_udp服务端与客户端超简单通信实例(附赠得到本地IP的工程代码)

    本篇将深入讲解如何在Android中实现一个简单的UDP服务端与客户端的通信实例,并附带获取本地IP地址的代码。 首先,理解UDP协议的基础特性是至关重要的。UDP是一种无连接的协议,它不建立连接,而是直接将数据包发送...

    java的UDP多线程服务端和简单客户端

    在多线程服务端,我们可以通过`DatagramPacket`中的`getSocketAddress()`方法获取发送数据的客户端的`SocketAddress`,进一步得到客户端的IP地址。根据IP地址,服务端可以区分不同的客户端并做出相应的处理。 在...

    java服务端与android客户端的通信

    在IT行业中,Java服务端与Android客户端之间的通信是构建分布式应用程序的关键部分。这种通信机制使得移动设备能够与服务器进行交互,获取数据、执行任务或更新应用程序的状态。在本场景中,我们关注的是通过Socket...

    Socket服务端与客户端通讯

    客户端则通过建立Socket连接到服务端的IP地址和端口,从而实现数据交换。 服务端的实现过程如下: 1. 导入必要的Socket库,例如在Java中,使用`java.net.ServerSocket`和`java.net.Socket`类。 2. 创建ServerSocket...

Global site tag (gtag.js) - Google Analytics