‘壹’ java如何查询本机ip地址和mac地址
Java中可以使用程序来获取本地ip地址和mac地址,使用InetAddress这个工具类,示例如下:
importjava.net.*;
publicclassNetInfo{
publicstaticvoidmain(String[]args){
newNetInfo().say();
}
publicvoidsay(){
try{
InetAddressi=InetAddress.getLocalHost();
System.out.println(i);//计算机名称和IP
System.out.println(i.getHostName());//名称
System.out.println(i.getHostAddress());//只获得IP
}
catch(Exceptione){e.printStackTrace();}
}
}
也可以通过命令行窗口来查看本地ip和mac地址,输入命令:ipconfig。
‘贰’ java 如何验证ip地址
可以使用正则表达式验证ip地址,ip地址分为v4和v6两个版本,v4为32位,分4段,中间用.隔开,v6为128位,可分为4段32位中间用::隔开。
以下是验证类详细代码:
import java.util.regex.Pattern;
/**
* A collection of utilities relating to InetAddresses.
*/
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);
}
}
‘叁’ 用java判断一个字符串是否是ip 如果是是哪类ip,怎么做
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class IpTest {
public static void main(String[] args) {
new IpTest().go();
}
/**
* 程序主要逻辑
*/
public void go() {
String IP = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
IP = br.readLine();
} catch (IOException ex) {
ex.printStackTrace();
}
//String IP="192.168.0.100/255.255.255.0";
IP = IP.replace(" ", "");
String[] temp = IP.split("/");
String[] sIP = temp[0].split("\\.");
/**
* 判断输入格式是否正确
*/
if (temp.length < 2) {
System.out.println("对不起,输入格式错误");
System.exit(0);
}
int Mask = Integer.parseInt(temp[1]);
int[] ip = new int[4];
for (int i = 0; i < sIP.length; i++) {
ip[i] = Integer.parseInt(sIP[i]);
}
/**
* IP地址各段不能大于255
*/
for (int i = 0; i < 4; i++) {
if (ip[i] > 255) {
System.out.println("对不起,IP输入错误");
System.exit(0);
}
}
/**
* 判断IP地址所属分世指睁类
*/
int ipclass = 0;
if (ip[0] < 127) {
System.out.println("A类地址逗档");
ipclass = 1;
} else if (ip[0] < 192) {
System.out.println("B类地址");
ipclass = 2;
} else if (ip[0] < 224) {
System.out.println("C类地址");
ipclass = 3;
}
/**
* 判断子网掩码是否输入正确
*/搜岁
if (Mask < 8 * ipclass) {
System.out.println("对不起,子网掩码输入错误");
System.exit(0);
}
int b = 0;
int a = Mask % 8;
b = Mask / 8;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < a; i++)
sb.append('1');
for (int i = 0; i < 8 - a; i++)
sb.append('0');
int end = Integer.parseInt(sb.toString(), 2);
ip[b] = ip[b] & end;
for (int i = b + 1; i < 4; i++)
ip[i] = 0;
for (int i = 0; i < 4; i++) {
System.out.print(ip[i]);
if (i != 3)
System.out.print(".");
}
}
}
‘肆’ java判断是否为合法的ip地址
/**
* 验证ip是否合法
*
* @param text
* ip地址
* @return 验证信息
*/
public String ipCheck(String text) {
if (text != null && !text.isEmpty()) {
// 定义正则表达式
String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
+ "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+ "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+ "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
// 判断ip地址是否与正则表达式匹配
if (text.matches(regex)) {
// 返回判断信息
return text + "\n是一个合法的IP地址!";
} else {
// 返回判断信息
return text + "\n不是一个合法的IP地址!";
}
}
// 返回判断信息
return "请输入要验证的IP地址!";
}
返回类型什么的都可以自己修改啊
‘伍’ java 判断字符串是不是是IP
public static void main(String[] args) {
String myIP = "160.1.1.1";
boolean state = isIp(myIP);
System.out.println(state);
}
public static boolean isIp(String ip){//判断是否是一个IP
boolean b = false;
ip = trimSpaces(ip);
if(ip.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")){
String s[] = ip.split("\\.");
if(Integer.parseInt(s[0])<255)
if(Integer.parseInt(s[1])<255)
if(Integer.parseInt(s[2])<255)
if(Integer.parseInt(s[3])<255)
b = true;
}
return b;
}
public static String trimSpaces(String ip){//去掉IP字符串前后所有的空格
while(ip.startsWith(" ")){
ip= ip.substring(1,ip.length()).trim();
}
while(ip.endsWith(" ")){
ip= ip.substring(0,ip.length()-1).trim();
}
return ip;
}
希望能帮到你!
‘陆’ 昆明Java培训:如何验证IP地址的有效性
【实例描述】IP地址是网络上每台计算机的标识,在浏览器中输入的网址也是要经过DNS服务器转换为IP地址才能找到服务器的,在很多网络程序中要求输入服务器IP地址或者对方连接的IP地址,IP地址的错误输入将使程序无法运行。
本实例将实现对IP地址的验证功能,实例的运行效果如图4.14所示。
【实现过程】(1)在Eclipse中新建项目CheckIP,并在其中创建一个CheckIP.java文件。
在该类的主方法中创建标准输入流的扫描器对象,接收用户输入的IP地址。
核心代码如下所示:protectedvoiddo_button_actionPerformed(ActionEvente){Stringtext=ipField.getText();//获取用户输入Stringinfo=matches(text);//对输入文本进行IP验证showMessageDialog(null,info);//用对话框输出验证结果}(2)编写IP地址的mathches()方法,该方法利用正则表达式对输入的字符串进行验证,并返回验证结果,关键代码如下所示。
publicStringmatches(Stringtext){if(text!=null&&!text.isEmpty()){//定义正则表达式Stringregex="^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\."+"(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\."+"(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\."+"(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$";//判断IP地址是否与正则表达式匹配if(text.matches(regex)){//返回判断信息returntext+"
是一个合法的IP地址!";}else{//返回判断信息returntext+"
不是一个合法的IP地址!";}}//返回判断信息return"请输入要验证的IP地址!";}【代码解析】本实例的关键点在于IP地址格式与数字范围的验证,用户在输入IP地址时,程序可以获取的只有字符串类型,所以本实例利用字符串的灵活性和正则表达式搭配进行IP地址格式与范围的验证。
该方法是String字符串类的方法,用于判断字符串与制定的正则表达式是否匹配。
其声明语法如下:publicbooleanmathches(Stringregex);Java程序设计经典300例XXXVIII【知识扩展】在正则表达式中,“.”代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符“.”,必须使用转义字符“”。
‘柒’ java如何确认IP是否属于某地址段
java确认IP属于某地址段主要是判断IP前两组是否相同,使用如下方法:
(1)如果同一个网弊卖段的概念是:
192.168.0.1和192.168.0.254,那么用.拆分判断第一二三部分完全一致应该就可以了,当然填写的时候1到255的限制应该是起码的要求了;
(2)如果192.168.0.1 和 192.168.0.254 ,再配合伍派上子网掩码定义为同一网腔卜贺段的话,那就用两个ip转换为二进制之后分别和二进制子网掩码做逻辑与,结果一致是不是就可以定义为同一网段;
网络中对网段的定义我也不太了解,不知道你是要遵循网络中的定义还是按你自己的需求来;