Atitit.获取某个服务 网络邻居列表 解决方案

原理,带入某个ip扫描从0---255

很快,多线程几秒就可以出来。

使用CountDownLatch来join线程..

返回  [{

"ip":"192.168.2.114",

"url":"http://@ip@:8080/cms/list_detail.html"

}]

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

package com.attilax.net;

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.concurrent.CountDownLatch;

import javax.management.RuntimeErrorException;

import com.attilax.core;

import com.attilax.json.AtiJson;

import com.attilax.lang.text.strUtil;

import com.csmy.my.center.util.zto.HttpUtil;

public class IPUtil {

public  List<Map> urls=new ArrayList<Map>();

public static void main(String[] args) throws UnknownHostException {

// System.out.println( getIp());

String url = "http://@ip@:8080/cms/list_detail.html";

IPUtil ipx=new IPUtil();

List<Map> urls2 =  ipx.getActIp(url);

System.out.println(  AtiJson.toJson(urls2));

////////

}

public    List<Map> getActIp(final String url)  {

//String a = subnet_url("http://192.168.0.111/lime/aa.jsp");

//System.out.println(a);

// 192.168.2.114

String ip;

try {

ip = InetAddress.getLocalHost().getHostAddress();

} catch (UnknownHostException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

throw new RuntimeException(e1);

}

System.out.println(ip);

String subnet = subnet(ip);

System.out.println(subnet);

//String okIp = "";

CountDownLatch end = new CountDownLatch(254);

for (int i = 1; i < 255; i++) {

final int tmp_i=i;

Runnable runnable = new Runnable() {

@Override

public void run() {

try {

String ip_item = subnet + "." + String.valueOf(tmp_i);

Stringurl2 = url.replace("@ip@", ip_item);

System.out.println(url2);

HttpUtil.sendGet(url2);

//okIp = url;

Map  m=new HashMap();

m.put("ip", ip_item);

m.put("url", url);

urls.add(m);

} catch (Exception e) {

// e.printStackTrace();

String ip_item = subnet + "." + String.valueOf(tmp_i);

System.out.println( ip_item+ "err:"+e.getMessage() );

}

end.countDown();

}

};

core.execMeth_Ays(runnable, "threadName"+String.valueOf(i));

}

try{

end.await();            //等待end状态变为0,即为比赛结束

}catch (InterruptedException e) {

throw new RuntimeException(e);

}finally{

System.out.println("Race ends!");

}

//  exe.shutdown();

return  this.urls;

}

/**

* ret subnet from url

* @param url

* @return

*/

public static String  subnet_url(String url) {

String[] a=strUtil.splitByMultiChar(url, "//,/");

String host_port=a[1];

return subnet(host_port);

}

public static String subnet(String host_port) {

int lastIdx=host_port.lastIndexOf(".");

return host_port.substring(0,lastIdx);

}

public static boolean isInternalIp(String ipAddress){

boolean isInnerIp = false;

long ipNum = getIpNum(ipAddress);

/**

私有IP:

A类  10.0.0.0-10.255.255.255

B类  172.16.0.0-172.31.255.255

C类  192.168.0.0-192.168.255.255

**/

long aBegin = getIpNum("10.0.0.0");

long aEnd = getIpNum("10.255.255.255");

long bBegin = getIpNum("172.16.0.0");

long bEnd = getIpNum("172.31.255.255");

long cBegin = getIpNum("192.168.0.0");

long cEnd = getIpNum("192.168.255.255");

isInnerIp = isInnerIp(ipNum,aBegin,aEnd) || isInnerIp(ipNum,bBegin,bEnd) || isInnerIp(ipNum,cBegin,cEnd) || ipAddress.equals("127.0.0.1");   //访问本地localhost获取为127.0.0.1

return isInnerIp;

}

private static long getIpNum(String ipAddress) {

String [] ip = ipAddress.split("\\.");

long a = Integer.parseInt(ip[0]);

long b = Integer.parseInt(ip[1]);

long c = Integer.parseInt(ip[2]);

long d = Integer.parseInt(ip[3]);

long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;

return ipNum;

}

private static boolean isInnerIp(long userIp,long begin,long end){

return (userIp>=begin) && (userIp<=end);

}

public static String getIp()

{

InetAddress ia = null;

try {

ia = InetAddress.getLocalHost();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//System.out.println();

return ia.getHostAddress();

}

public static String subnet()

{

String ip=getIp();

int lastIdx=ip.lastIndexOf(".");

return ip.substring(0,lastIdx);

}

}

Atitit.获取某个服务 网络邻居列表 解决方案的更多相关文章

  1. Atitit.得到网络邻居列表java php c#.net python

    Atitit.得到网络邻居列表java php c#.net python 1. 获取workgroup  net view /domain1 2. 得到网络邻居列表1 3. 得到机器的ip  通过p ...

  2. Atitit.android播放smb 网络邻居视频文件解决方案

    Atitit.android播放smb 网络邻居视频文件解决方案 Android4.4 1.1. Android4视频播放器不能直接地支持smb协议..子好先转换成个http流 1.2. ES文件浏览 ...

  3. Atitit smb网络邻居原理与实现查询列表

    Atitit smb网络邻居原理与实现查询列表 1.1. SAMBA的起源1 1.2. Smb是否依赖unpn SSDP  ,还是使用扫描遍历0-255发现原理1 2. SMB共享不成功原因分享(WI ...

  4. C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息>中,返回的楼层信息结果中包含了楼层的具体信 ...

  5. Atitit 在线支付系统功能设计原理与解决方案 与目录

    Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...

  6. atitit.获取北京时间CST 功能api总结 O7

    atitit.获取北京时间CST 功能api总结 O7 1. 获取cst时间(北京时间)两布:1.抓取url timtstamp >>format 到cst 1 2. 设置本机时间  se ...

  7. VNF网络性能提升解决方案及实践

    VNF网络性能提升解决方案及实践 2016年7月 作者:    王智民 贡献者:     创建时间:    2016-7-20 稳定程度:    初稿 修改历史 版本 日期 修订人 说明 1.0 20 ...

  8. Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系

    Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系 1. Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似 ...

  9. 获取主机信息,网络信息AIP,getsockname,getpeername,getservbyname,getservbyport,inet_ntop,inet_pton

    获取主机信息 1.ip地址转换,主机字节序 <---> 网络字节序 #include <arpa/inet.h> int inet_pton(int af, const cha ...

随机推荐

  1. NHibernate 之数据操作 (第五篇)

    数据操作,在这里主要介绍INSERT.UPDATE.DELETE.我们在使用NHibernate的时候,如果只是查询数据,不需要改变数据库的值,那么是不需要提交或者回滚到数据库的. 一.INSERT ...

  2. enum don't allocate any memory

    int main() { _asm{ mov edi,edi mov edi,edi } ,Green,Yellow}; _asm{ mov edi,edi mov edi,edi } Color c ...

  3. rocketmq,zookeeper,redis分别持久化的方式

    1.rocketmq持久化: RocketMQ 的所有消息都是持久化的, 先写入系统 PAGECACHE, 然后刷盘, 可以保证内存与磁盘都有一份数据,访问时,直接从内存读取. RocketMQ 的所 ...

  4. Object.keys()的简单理解

    1.对象的话返回属性名 var obj = {'a':'123','b':'345'}; console.log(Object.keys(obj)); //['a','b'] var obj1 = { ...

  5. easyui 消息提示框

    1.浏览器消息提示框 浏览器弹出框,可以在浏览器设置中被屏蔽掉,导致效果失效 alert() 2.easyui 框架提供的消息框 easyui 框架自带的消息框,不可以被屏蔽. $.messager. ...

  6. iOS:iOS中的几种动画

    本文来自收藏,感谢原创博主. iOS中的动画 摘要 本文主要介绍核iOS中的动画:核心动画Core Animation, UIView动画, Block动画, UIImageView的帧动画. 核心动 ...

  7. 安装pip源

    国内源地址: 豆瓣(douban) http://pypi.douban.com/simple/ 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 h ...

  8. hue启用ldap

    [desktop] [[auth]] …… …… backend=desktop.auth.backend.LdapBackend .….. http://gethue.com/ldap-or-pam ...

  9. scala sbt 添加国内镜像

    FROM: http://www.4wei.cn/archives/1002417 sbt运行时经常需要下载大量的jar包,默认连接到maven官网,速度通常比较慢.在`~/.sbt/`下添加一个`r ...

  10. 关于windows下自带的forfile批量删除文件bat命令

    最近在开发的过程中,为了节省资源,需要用到windows下批量删除文件的批处理命令,也就是bat 主要内容: forfiles /p "E:\pictures" /m * /d - ...