1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java 局域网IP地址扫描

Java 局域网IP地址扫描

时间:2021-10-04 07:45:11

相关推荐

Java 局域网IP地址扫描

Java扫描局域网地址主要通过CMD命令,主要通过RuntimeProcess类,由于同一局域网下的IP地址比较多需要通过Java的多线程来扫描端口。

import java.io.BufferedInputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import .InetAddress;import java.util.regex.Matcher;import java.util.regex.Pattern;public class PingTask{private String address;public PingTask(String address){this.address=address;}public PingResult run() {Runtime runtime;Process process;try {runtime=Runtime.getRuntime();process=runtime.exec("ping "+address);BufferedInputStream inputStream=(BufferedInputStream) process.getInputStream();byte [] bt =new byte[1024];StringBuffer buffer=new StringBuffer();int len=0;while((len=inputStream.read(bt, 0,bt.length))!=-1){buffer.append(new String(bt, 0, len, "GBK"));}String regex="(\\d*)?";String result="";Pattern pattern=pile(regex);Matcher matcher=pattern.matcher(buffer.toString());while(matcher.find()){if(!matcher.group().equals("")){result=matcher.group();}}InetAddress inetAddress=InetAddress.getByName(address);String hostname="";if(!inetAddress.getHostName().equals(address)){hostname=inetAddress.getHostName();}String mac="";process=runtime.exec("arp -a "+address);BufferedInputStream macinputStream=(BufferedInputStream) process.getInputStream();byte [] macbt =new byte[1024];StringBuffer macbuffer=new StringBuffer();while((len=macinputStream.read(macbt, 0,macbt.length))!=-1){macbuffer.append(new String(macbt, 0, len, "GBK"));}String[] macresult=macbuffer.toString().trim().split("\r\n");if(!macbuffer.toString().contains("未找到 ARP")){mac=macresult[2].substring(20, 40).trim();}PingResult pingResult=new PingResult(address,(100-Integer.parseInt(result))+"%",mac,hostname);} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return pingResult;}}

调用方法:

public static void main(String[] args) {PingResult result=new PingTask("123.123.123.123");System.out.println(result.toString());}

PingResult 类

package com.xu.ip;public class PingResult {private static String address;//IP地址private static String result;//是否可以连接private static String physicialaddress;//物理地址private static String hostname;//主机名public String getPhysicialaddress() {return physicialaddress;}public void setPhysicialaddress(String physicialaddress) {PingResult.physicialaddress = physicialaddress;}public String getHostname() {return hostname;}public void setHostname(String hostname) {PingResult.hostname = hostname;}public PingResult(String address, String result) {PingResult.address = address;PingResult.result = result;}public PingResult() {}public PingResult(String address, String result, String physicialaddress, String hostname) {PingResult.address = address;PingResult.result = result;PingResult.physicialaddress = physicialaddress;PingResult.hostname = hostname;}public String getAddress() {return address;}public void setAddress(String address) {PingResult.address = address;}public String getResult() {return result;}public void setResult(String result) {PingResult.result = result;}@Overridepublic String toString() {return "PingResult [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="+ super.toString() + "]";}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。