java 动态添加电脑ip地址_java如何动态过去IP地址

java如何动态过去IP地址

关注:283  答案:2  mip版

解决时间 2021-01-24 20:47

e6cb1a03ad541b3098697807b7bf1798.png

提问者等妳¬硪唯一鍀执念

2021-01-24 04:03

java如何动态过去IP地址

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家选择重头再来

2021-01-24 04:18

package com.babyDuncan.java;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.LineNumberReader;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class ipServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String ip = getRemoteAddress(request);

System.out.println(ip);

System.out.println(getMACAddress(ip));

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out

.println("HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("");

out.println("  A Servlet");

out.println("  ");

out.print("    This is ");

out.print(this.getClass());

out.println(", using the POST method");

out.println("  ");

out.println("");

out.flush();

out.close();

}

public String getRemoteAddress(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for");

if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {

ip = request.getHeader("Proxy-Client-IP");

}

if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {

ip = request.getHeader("WL-Proxy-Client-IP");

}

if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {

ip = request.getRemoteAddr();

}

return ip;

}

public String getMACAddress(String ip) {

String str = "";

String macAddress = "";

try {

Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);

InputStreamReader ir = new InputStreamReader(p.getInputStream());

LineNumberReader input = new LineNumberReader(ir);

for (int i = 1; i

str = input.readLine();

if (str != null) {

if (str.indexOf("MAC Address") > 1) {

macAddress = str.substring(

str.indexOf("MAC Address") + 14, str.length());

break;

}

}

}

} catch (IOException e) {

e.printStackTrace(System.out);

}

return macAddress;

}

}

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼娇而不傲的猫

2021-01-24 05:09

可以使用正则表达式验证ip地址,ip地址分为v4和v6两个版本,v4为32位,分4段,中间用.隔开,v6为128位,可分为4段32位中间用::隔开。

以下是验证类详细代码:

import java.util.regex.pattern;

public class inetaddressutils {

public static void main(string[] args){

string addr="192.168.1.2";

system.out.println(isipv4address(addr));

}

private static final pattern ipv4_pattern =

pattern.compile(

"^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$");

private static final pattern ipv6_std_pattern =

pattern.compile(

"^(?:[0-9a-fa-f]{1,4}:){7}[0-9a-fa-f]{1,4}$");

private static final pattern ipv6_hex_compressed_pattern =

pattern.compile(

"^((?:[0-9a-fa-f]{1,4}(?::[0-9a-fa-f]{1,4})*)?)::((?:[0-9a-fa-f]{1,4}(?::[0-9a-fa-f]{1,4})*)?)$");

public static boolean isipv4address(final string input) {

return ipv4_pattern.matcher(input).matches();

}

public static boolean isipv6stdaddress(final string input) {

return ipv6_std_pattern.matcher(input).matches();

}

public static boolean isipv6hexcompressedaddress(final string input) {

return ipv6_hex_compressed_pattern.matcher(input).matches();

}

public static boolean isipv6address(final string input) {

return isipv6stdaddress(input) || isipv6hexcompressedaddress(input);

}

}

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值