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

合集下载

java获取当前接口请求路径的几种方法

java获取当前接口请求路径的几种方法

java获取当前接口请求路径的几种方法在Java开发中,有时候我们需要获取当前接口的请求路径,以便进行一些处理。

下面我将介绍几种常用的方法来获取当前接口的请求路径。

1. 使用HttpServletRequest对象在Servlet或者Spring MVC中,我们可以通过HttpServletRequest对象获取当前请求的路径。

可以使用如下代码来获取:```HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();String requestUrl = request.getRequestURL().toString();String queryString = request.getQueryString();String fullPath = requestUrl + (queryString != null ? "?" + queryString : "");```通过`getRequestURL()`方法获取请求的URL,再使用`getQueryString()`方法获取请求URL中的查询参数。

最后将二者拼接起来,即可得到完整的请求路径。

2. 使用HttpRequestUtils工具类如果项目中没有使用Servlet或Spring MVC框架,我们可以自己编写一个HttpRequestUtils工具类,代码如下:```import javax.servlet.http.HttpServletRequest;public class HttpRequestUtils {public static String getRequestUrl(HttpServletRequest request) {StringBuffer requestUrl = request.getRequestURL();String queryString = request.getQueryString();String fullPath = requestUrl + (queryString != null ? "?" + queryString : "");return fullPath;}}```在需要获取请求路径的地方,如下调用该工具类的方法即可:```HttpServletRequest request = ...;String requestUrl = HttpRequestUtils.getRequestUrl(request);```3. 使用JAX-RS的UriInfo对象如果你在使用JAX-RS开发RESTful服务,可以使用UriInfo对象获取请求路径。

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

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

Java获取客户端IP、端口等信息.txt花前月下,不如花钱“日”下。

叶子的离开,是因为风的追求还是树的不挽留?干掉熊猫,我就是国宝!别和我谈理想,戒了!Java获取客户端IP、端口等信息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("")); //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());。

java获取linux服务器上的IP操作

java获取linux服务器上的IP操作

java获取linux服务器上的IP操作在编码过程中需要获取本地IP地址,⾸先使⽤的是下⾯的⽅法,在Windows环境正常,但是linux服务器上就获取不到,public static String getIpAddress() {String hostAddress = "";try {InetAddress address = InetAddress.getLocalHost();hostAddress = address.getHostAddress();} catch (UnknownHostException e) {e.printStackTrace();}return hostAddress;}这样在linux上依然获取到的是127.0.0.1,查询服务器上⾯IP发现:[mm_cbms1@localhost ~]$ ip address1:lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2:eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000link/ether 00:50:56:a2:0d:1b brd ff:ff:ff:ff:ff:ffinet 10.12.8.243/24 brd 10.12.8.255 scope global eth0inet6 fe80::250:56ff:fea2:d1b/64 scope linkvalid_lft forever preferred_lft forever这⾥⾸先要了解上⾯列出的接⼝中的含义:1、linux的⽹络接⼝之扫盲(1) ⽹络接⼝的命名这⾥并不存在⼀定的命名规范,但⽹络接⼝名字的定义⼀般都是要有意义的。

JAVA如何获取客户端IP地址和MAC地址

JAVA如何获取客户端IP地址和MAC地址

JAVA如何获取客户端IP地址和MAC地址本⽂介绍了JAVA如何获取客户端IP地址和MAC地址,分享给⼤家,具体如下:1.获取客户端IP地址public String getIp(HttpServletRequest request) throws Exception {String ip = request.getHeader("X-Forwarded-For");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {int index = ip.indexOf(",");if (index != -1) {return ip.substring(0, index);} else {return ip;}}}ip = request.getHeader("X-Real-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}return request.getRemoteAddr();}为什么不直接使⽤request.getRemoteAddr();⽽要在之前判断两个请求头"X-Forwarded-For"和"X-Real-IP"X-Forwarded-For: client1, proxy1, proxy2, proxy3其中的值通过⼀个逗号+空格把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到⼀个请求,就把请求来源IP地址添加到右边。

所有我们只取第⼀个IP地址X-Real-IP,⼀般只记录真实发出请求的客户端IP解决⽤localhost访问ip为0:0:0:0:0:0:0:1的问题public String getIp(HttpServletRequest request) throws Exception {String ip = request.getHeader("X-Forwarded-For");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {int index = ip.indexOf(",");if (index != -1) {return ip.substring(0, index);} else {return ip;}}}ip = request.getHeader("X-Real-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}ip = request.getHeader("Proxy-Client-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}ip = request.getHeader("WL-Proxy-Client-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}ip = request.getRemoteAddr();return ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;}2.获取客户端MAC地址UdpGetClientMacAddr umac = new UdpGetClientMacAddr(sip);String smac = umac.GetRemoteMacAddr();添加⼀个获取MAC的时间限制final UdpGetClientMacAddr umac = new UdpGetClientMacAddr(sip);//---长时间获取不到MAC地址则放弃ExecutorService exec = Executors.newFixedThreadPool(1);Callable<String> call = new Callable<String>() {public String call() throws Exception {return umac.GetRemoteMacAddr();}};try {Future<String> future = exec.submit(call);String smac = future.get(1000 * 1, LISECONDS);loginMonitor.setMacAddress(smac);} catch (TimeoutException ex) {loginMonitor.setMacAddress("获取失败");("获取MAC地址超时");}// 关闭线程池exec.shutdown();//---需要先获取IP地址作为参数构造⼀个UdpGetClientMacAddrUdpGetClientMacAddr.javapackage monsys.security.controller;import java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .InetAddress;/*** 主机A向主机B发送“UDP-NetBIOS-NS”询问包,即向主机B的137端⼝,发Query包来询问主机B的NetBIOS Names信息。

Java获取服务器IP及端口的方法实例分析

Java获取服务器IP及端口的方法实例分析

Java获取服务器IP及端⼝的⽅法实例分析本⽂实例讲述了Java获取服务器IP及端⼝的⽅法。

分享给⼤家供⼤家参考,具体如下:前⼏天写过⼀个获取远程服务器的IP和端⼝的程序,从⽹上查了⼀些资料顺便加⼀些⾃⼰的理解,希望对⼤家有所帮助:struts2 获取requestHttpServletRequest requet=ServletActionContext.getRequest();requet.getScheme()+"://"+requet.getServerName()+":"+requet.getServerPort()request.getHeader("User-Agent"); //就是取得客户端的系统版本request.getRemoteAddr(); //取得客户端的IPrequest.getRemoteHost() //取得客户端的主机名request.getRemotePort(); //取得客户端的端⼝request.getRemoteUser(); //取得客户端的⽤户request.getLocalAddr(); //取得服务器IPrequest.getLocalPort(); //取得服务器端⼝1、JSP中获得当前应⽤的相对路径和绝对路径根⽬录所对应的绝对路径:request.getRequestURI()⽂件的绝对路径 :application.getRealPath(request.getRequestURI());当前web应⽤的绝对路径 :application.getRealPath("/");取得请求⽂件的上层⽬录:new File(application.getRealPath(request.getRequestURI())).getParent()2 Servlet中获得当前应⽤的相对路径和绝对路径根⽬录所对应的绝对路径:request.getServletPath();⽂件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())当前web应⽤的绝对路径 :servletConfig.getServletContext().getRealPath("/");ServletContext对象获得⼏种⽅式:javax.servlet.http.HttpSession.getServletContext()javax.servlet.jsp.PageContext.getServletContext()javax.servlet.ServletConfig.getServletContext()3.Java类中获得绝对路径根据java.io.File的Doc⽂挡,可知: 默认情况下new File("/")代表的⽬录为:System.getProperty("user.dir")。

java中连接服务器用法

java中连接服务器用法

java中连接服务器用法在Java中,连接服务器通常使用Socket类。

Socket类提供了一种客户端和服务器之间进行通信的机制。

首先,客户端需要创建一个Socket对象来连接服务器。

可以通过指定服务器的IP地址和端口号来创建Socket对象。

例如,以下代码创建一个Socket对象并连接到本地主机的80端口:```javaString serverIP = "127.0.0.1";int serverPort = 80;Socket socket = new Socket(serverIP, serverPort);```在连接服务器之后,客户端可以使用Socket对象的输入输出流进行数据的发送和接收。

可以通过getInputStream()方法获取输入流,通过getOutputStream()方法获取输出流。

例如,以下代码从服务器接收数据并发送数据给服务器:```java// 从服务器接收数据InputStream inputStream = socket.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));String response = reader.readLine();System.out.println("服务器响应:" + response);// 发送数据给服务器OutputStream outputStream = socket.getOutputStream();PrintWriter writer = new PrintWriter(outputStream, true);writer.println("Hello Server");```在与服务器通信完成后,客户端可以关闭Socket连接。

JAVA获得域名IP地址的方法

JAVA获得域名IP地址的方法
这篇文章主要介绍了java获取当前时间并格式化代码实例中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值需要的朋友可以参考下
JAVA获得域名 IP地址的方法
本文实例讲述了JAVA获得域名IP地址的方法。分享给大家供大家参考。具体如下:
import .InetAddress; import .UnknownHostException; public class TestInetAddress { InetAddress myIpAddress = null; InetAddress[] myServer = null; public static void main(String args[]) { TestInetAddress address = new TestInetAddress(); System.out.println("Your host IP is: " + address.getLocalhostIP()); String domain = ; System.out.println("The server domain name is: " + domain); InetAddress[] array = address.getServerIP(domain); int count=0; for(int i=1; i<array.length; i++){ System.out.println("ip "+ i +" "+ address.getServerIP(domain)[i-1]); count++; } System.out.println("IP address total: "+count); } /** * 获得 localhost 的IP地址 * @return */ public InetAddress getLocalhostIP() { try { myIpAddress = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } return (myIpAddress); } /** * 获得某域名的IP地址 * @param domain 域名 * @return */ public InetAddress[] getServerIP(String domain) { try { myServer = InetAddress.getAllByName(domain); } catch (UnknownHostException e) { e.printStackTrace(); } return (myServer); } }

如何在logback日志配置里获取服务器ip和端口

如何在logback日志配置里获取服务器ip和端口

如何在logback⽇志配置⾥获取服务器ip和端⼝⽬录logback⽇志配置获取服务器ip和端⼝1、新建⼀个类继承ClassicConverter2、在配置⽂件logback.xml增加如下配置3、在需要⽤到ip的位置这样写: %ip4、获取端⼝号,同理让Logback⽇志中显⽰主机名与IP地址及⼀切你想显⽰的1、创建2、重新⽅法3、配置logback.xmllogback⽇志配置获取服务器ip和端⼝1、新建⼀个类继承ClassicConverter在⽅法中获取服务器ippackage mon;import ch.qos.logback.classic.pattern.ClassicConverter;import ch.qos.logback.classic.spi.ILoggingEvent;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import .InetAddress;import .UnknownHostException;/*** @author xiaoming* @date 2019/5/14 11:37* @description*/public class LogIpConfig extends ClassicConverter {private static final Logger logger = LoggerFactory.getLogger(LogIpConfig .class);private static String webIP;static {try {webIP = InetAddress.getLocalHost().getHostAddress();} catch (UnknownHostException e) {logger.error("获取⽇志Ip异常", e);webIP = null;}}@Overridepublic String convert(ILoggingEvent event) {return webIP;}}2、在配置⽂件logback.xml增加如下配置<conversionRule conversionWord="ip" converterClass="mon.LogIpConfig" />3、在需要⽤到ip的位置这样写: %ip"host": "%ip" 这样写,本地⽇志输⼊的时候内容是: "host": "127.0.0.1"4、获取端⼝号,同理package mon;import ch.qos.logback.classic.pattern.ClassicConverter;import ch.qos.logback.classic.spi.ILoggingEvent;import ng3.ObjectUtils;import ng3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.management.MBeanServer;import javax.management.MBeanServerFactory;import javax.management.ObjectName;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;/*** @author xiaoming* @date 2019/5/14 11:37* @description*/public class LogPortConfig extends ClassicConverter {private static final Logger logger = LoggerFactory.getLogger(LogPortConfig.class);private static String webPort;static {try {List<MBeanServer> serverList = MBeanServerFactory.findMBeanServer(null);for (MBeanServer server : serverList) {Set<ObjectName> names = new HashSet<ObjectName>();names.addAll(server.queryNames(new ObjectName("Catalina:type=Connector,*"), null));Iterator<ObjectName> it = names.iterator();while (it.hasNext()) {ObjectName oName = (ObjectName) it.next();String pValue = (String) server.getAttribute(oName, "protocol");if (StringUtils.equals("HTTP/1.1", pValue)) {webPort = ObjectUtils.toString(server.getAttribute(oName, "port"));}}}} catch (Exception e) {logger.error("获取port失败,影响logback的⽂件拼接", e);webPort = null;}}@Overridepublic String convert(ILoggingEvent event) {return webPort;}}<conversionRule conversionWord="port" converterClass="mon.LogPortConfig" />%ip:%port让Logback⽇志中显⽰主机名与IP地址及⼀切你想显⽰的1、创建⼀个类继承⾃ch.qos.logback.classic.pattern.ClassicConverter2、重新⽅法@Overridepublic String convert(ILoggingEvent event) {}3、配置logback.xml<conversionRule conversionWord="sulong" converterClass="SulongClass" /><!--配置⽇志的格式--><property name="CONSOLE_LOG_PATTERN" value="%sulong %date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %yellow(%thread) | %green(%logger) | %msg%n"/>以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档