java实现见得网络扫描器功能
来源:互联网 发布:淘宝企业店铺要交费吗 编辑:程序博客网 时间:2024/05/21 01:51
首先我实现的功能是先进行IP地址的扫描来判断是否有地址存活,其次再对存活的IP地址来对端口访问来判断是否是否有端口开放
首先是对ip地址扫描
public class SocketThread implements Runnable{InetAddress inetAddress;String aString;public SocketThread(String a) {// TODO Auto-generated constructor stubaString=a;}@Overridepublic void run() {// TODO Auto-generated method stubtry {inetAddress=InetAddress.getByName(aString);int timeOut = 3000 ; //超时应该在3钞以上 try {boolean status = inetAddress.isReachable(timeOut);if(status){System.out.println(aString+":存活");Main.ipC.add(aString);}else{System.out.println(aString+":不存活");}} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} } catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}这是实现的线程类,通过InetAddress来判断IP地址,以3秒为时限来通过isReachable来判断是否能访问,在UnKnownHOstException中也可以加上异常处理,但那里面异常都是不是ip地址的报错,一般情况下不会发生该问题。
其次是对端口的扫描:
try {socket=new Socket(ipC.get(i), j);System.out.print(ipC.get(i)+" 的端口 "+j+":可用 ");InputStream iStream=socket.getInputStream();BufferedReader bReader=new BufferedReader(new InputStreamReader(iStream));String aString;if (!((aString=bReader.readLine())==null)) {System.out.print("端口功能:"+aString);}System.out.println();} catch (UnknownHostException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blockSystem.out.println(ipC.get(i)+" 的端口 "+j+":不可用");}
这通过socket来实现对端口的扫描,当出现io异常则代表该端口不可用,然后有的端口则会返回数据。不如ssh,但是tomcat的8080端口就不会返回数据
下面是完整的程序运行结果图
下面则是完整代码
public class Main {private static String iPStringS,iPStringE;private static int s,e;private static Scanner scanner;public static ArrayList<String> ipC=new ArrayList<>();public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入初始的ip地址");scanner=new Scanner(System.in);iPStringS=scanner.nextLine();System.out.println("请输入结束的ip地址");iPStringE=scanner.nextLine();ipConnect();new java.util.Timer().schedule(new TimerTask() {@Overridepublic void run() {if(ipC.size()==0){System.out.println("结束");return;}System.out.println("请输入初始端口");s=scanner.nextInt();System.out.println("请输入结束端口");e=scanner.nextInt();portConnect();}}, 3000);}public static void portConnect(){Socket socket=null;for(int i=0;i<ipC.size();i++){for(int j=s;j<=e;j++){try {socket=new Socket(ipC.get(i), j);System.out.print(ipC.get(i)+" 的端口 "+j+":可用 ");InputStream iStream=socket.getInputStream();BufferedReader bReader=new BufferedReader(new InputStreamReader(iStream));String aString;if (!((aString=bReader.readLine())==null)) {System.out.print("端口功能:"+aString);}System.out.println();} catch (UnknownHostException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blockSystem.out.println(ipC.get(i)+" 的端口 "+j+":不可用");}}}}public static void ipConnect(){String[] ipStrings=iPStringS.split("\\.");String ip3s=ipStrings[3];ipStrings=iPStringE.split("\\.");String ip3E=ipStrings[3];String ip3=ipStrings[0]+"."+ipStrings[1]+"."+ipStrings[2]+".";int s=new Integer(ip3s);int e=new Integer(ip3E);ExecutorService threadPool = Executors.newCachedThreadPool();for(int i=s;i<=e;i++){String ipall=ip3+i;threadPool.execute(new SocketThread(ipall));}threadPool.shutdown();try {// 请求关闭、发生超时或者当前线程中断,无论哪一个首先发生之后,都将导致阻塞,直到所有任务完成执行// 设置最长等待10秒threadPool.awaitTermination(5, TimeUnit.SECONDS);} catch (InterruptedException e1) {//e1.printStackTrace();}} }
0 0
- java实现见得网络扫描器功能
- 借用snort实现网络扫描器发现功能
- java 实现的端口扫描器
- 利用Java实现端口扫描器
- 网络扫描器的设计与实现
- 网络漏洞扫描器的设计与实现
- 多线程端口扫描器的实现(java)
- java扫描器
- java扫描器
- •网络扫描器的设计与实现-(2013/09/18)
- eXscan 网络扫描器
- PHP 实现见得的二叉排序树查找算法
- Java类扫描器的实现(使用模板Template模式)
- 端口扫描器的实现
- waf实现扫描器识别
- JavaScript实现端口扫描器
- 端口扫描器的实现
- java版端口扫描器
- 第十三周 项目5-拓扑排序算法验证
- Mysql报警告:WARN: Establishing SSL connection
- 第十四周项目1(4) 验证平衡二叉树相关算法
- 第十五周项目一验证算法
- 【第14周项目3-是否二叉排序树?】
- java实现见得网络扫描器功能
- 正则表达式
- 第十四周项目2-二叉树排序树中查找的路径
- GNU M4宏处理器快速理解
- 第十四周项目1—验证折半查找
- This version does not support documents saved in the Xcode 8 format. Open this document with Xcode 8
- C#创建xml文件并写入内容
- 多线程编程之pthread_cond_wait
- 微信开发 (自动回复图片,自定义菜单)