Java获取客户端IP、端口等信息

时间:2024.5.15

String agent = request.getHeader("user-agent");

System.out.println(agent);

StringTokenizer st = new StringTokenizer(agent,";");

st.nextToken();

//得到用户的浏览器名 String userbrowser = st.nextToken(); System.out.println(userbrowser); //得到用户的操作系统名 String useros = st.nextToken(); System.out.println(useros); //取得本机的信息也可以这样: //操作系统信息 System.out.println(System.getProperty("os.name")); //win2003竟然是win xp? System.out.println(System.getProperty("os.version")); System.out.println(System.getProperty("os.arch")); //瀏覽器: System.out.println(request.getHeader("user-agent"));

//再送个红包

System.out.println(request.getHeader("user-agent")); //返回客户端浏览器的版本号、类型 System.out.println(request.getMethod()); //:获得客户端向服务器端传送数据的方法有get、post、put等类型

System.out.println(request.getRequestURI()); //:获得发出请求字符串的客户端地址 System.out.println(request.getServletPath()); //:获得客户端所请求的脚本文件的文件路径

System.out.println(request.getServerName()); //:获得服务器的名字

System.out.println(request.getServerPort()); //:获得服务器的端口号

System.out.println(request.getRemoteAddr()); //:获得客户端的ip地址

System.out.println(request.getRemoteHost()); //:获得客户端电脑的名字,若失败,则返回客户端电脑的ip地址

System.out.println(request.getProtocol()); //:

System.out.println(request.getHeaderNames()); //:返回所有request header的名字,结果集是一个enumeration(枚举)类的实例

System.out.println("Protocol: " + request.getProtocol());

System.out.println("Scheme: " + request.getScheme());

System.out.println("Server Name: " + request.getServerName() );

System.out.println("Server Port: " + request.getServerPort());

System.out.println("Protocol: " + request.getProtocol());

System.out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo()); System.out.println("Remote Addr: " + request.getRemoteAddr());

System.out.println("Remote Host: " + request.getRemoteHost());

System.out.println("Character Encoding: " + request.getCharacterEncoding());

System.out.println("Content Length: " + request.getContentLength());

System.out.println("Content Type: "+ request.getContentType());

System.out.println("Auth Type: " + request.getAuthType());

System.out.println("HTTP Method: " + request.getMethod()); System.out.println("Path Info: " + request.getPathInfo()); System.out.println("Path Trans: " + request.getPathTranslated()); System.out.println("Query String: " + request.getQueryString()); System.out.println("Remote User: " + request.getRemoteUser()); System.out.println("Session Id: " + request.getRequestedSessionId()); System.out.println("Request URI: " + request.getRequestURI()); System.out.println("Servlet Path: " + request.getServletPath()); System.out.println("Accept: " + request.getHeader("Accept")); System.out.println("Host: " + request.getHeader("Host")); System.out.println("Referer : " + request.getHeader("Referer")); System.out.println("Accept-Language : " + request.getHeader("Accept-Language")); System.out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding")); System.out.println("User-Agent : " + request.getHeader("User-Agent")); System.out.println("Connection : " + request.getHeader("Connection")); System.out.println("Cookie : " + request.getHeader("Cookie")); System.out.println("Created : " + session.getCreationTime());


第二篇:nat123端口映射获取客户端访问真实用户IP方法


内网地址经过代理或NAT端口映射后,获取到的IP都是映射的那个转发IP,客户端访问的真正用户IP丢失了,怎么弄?怎么才能获取得到客户端访问真实用户IP?

解决方法:通过nat123端口映射处理,获取客户端真正用户IP。

Nat123自带客户端IP转发,只需要在对应应用程序中配置好相关参数即可。

参数配置都是按照.NET、PHP、DISCUZ标准设置,详细实现方法如下:

1. asp.net获取方法为:

string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();

2.PHP获取用户真实IP方法为:$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

3.discuz论坛获取的具体方法为:

解决方法(Discuz x2.5至Discuz x3.1),其它版本如需知道请回复或者开新帖询问 打开文件\source\class\discuz\discuz_application.php 找到如下代码:

把函数

private function _get_client_ip() {

$ip = $_SERVER['REMOTE_ADDR'];

if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s',

$_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {

foreach ($matches[0] AS $xip) {

if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {

$ip = $xip;

break;

}

}

}

return $ip;

}

修改成:

private function _get_client_ip() {

$ip = $_SERVER['REMOTE_ADDR'];

if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s',

$_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {

foreach ($matches[0] AS $xip) {

if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {

$ip = $xip;

break;

}

}

}

if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&

preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

}

return $ip;

}

更多相关推荐:
Java获取客户端IP、端口等信息

Java获取客户端IP端口等信息txt花前月下不如花钱日下叶子的离开是因为风的追求还是树的不挽留干掉熊猫我就是国宝别和我谈理想戒了Java获取客户端IP端口等信息StringagentrequestgetHea...

简单端口扫描器java的设计与实现

简单端口扫描器java的设计与实现IPScan类的实现packagescanpraticeimportjavanetInetAddressimportjavanetSocketimportjavanetUnkn...

tomcat端口解决办法

lt一gt首先是JDK环境变量配置在Windows系统中1右击我的电脑gt属性gt高级gt环境变量gt系统变量2新建建立javahome变量值CProgramFilesJavajdk160016JDK安装目录3...

关于java下双tomcat配置

一JDK和TOMCAT配置1先安装java相关的jdk160182在网上下载apachetomcat7012压缩包3配置环境变量JAVAHOME为CProgramFilesJavajdk160034解压apac...

利用tomcat发布java WEB项目到外网的方法

首先写好项目放在没有中文的路径文件上tomcat也是路径不能有中文路径然后在tomcat的conf文件的serverxml中添加ltContextpathquotfirstquotdocBasequotGtex...

tomcat 端口被占用 Address already in use JVM_Bind

原创tomcat端口被占用AddressalreadyinuseJVMBind8080tomcat端口被占用的情况一已经启动了tomcat如果没有关闭再次启动就会报错二没有tomcat启动仍然报端口被占用可能是...

Java语言Socket接口用法详解

Socket接口用法详解在Java中基于TCP协议实现网络通信的类有两个在客户端的Socket类和在服务器端的ServerSocket类ServerSocket类的功能是建立一个Server并通过accept方...

Java运行机制与端口之间的关系

Java运行机制与端口之间的关系和Internet上的许多环境一样完整的Java应用环境实际上也是一个客户机服务器环境更确切地说是浏览器服务器模型即BrowserServer模型简称Web模型客户机服务器在分布...

JAVA获取服务器IP地址和端口

JAVA获取服务器IP地址和端口情形分析1ApacheTomcat集群2Weblogic集群3单机环境说明1tomcat中由于需要从System对象中读取自定义参数值需要在启动参数中加入Dhttpdruntim...

我的世界Minecraft教你如何用nat123和Teamviewer联机

想必Minecraft联机一直困扰着你Hamachi要翻墙注册水桶服操作麻烦花生壳不会用网上教程看不懂怎么办呢今天交给大家一个简单的联机技巧用Teamviewer和nat123联机Nat123是一个端口映射软件...

远程操作软件Teamviewer的使用方法

远程操作软件Teamviewer的使用方法Teamviewer使用方法最近由于朋友的电脑有些问题要远程协助他解决点问题使用了几款远程连接的软件如QQ远程协助Windows自带的远程桌面连接VNC等软件因为我们都...

teamviewer原理和阻止方法

teamviewerTeamViewer是一个非常简单好用的远程工具是一个在任何防火墙和NAT代理的后台用于远程控制桌面共享和文件传输的简单且快速的解决方案为了连接到另一台计算机只需要在两台计算机上同时运行Te...

java获取端口号(3篇)