Atitit.获取某个服务 网络邻居列表 解决方案
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.获取某个服务 网络邻居列表 解决方案的更多相关文章
- Atitit.得到网络邻居列表java php c#.net python
Atitit.得到网络邻居列表java php c#.net python 1. 获取workgroup net view /domain1 2. 得到网络邻居列表1 3. 得到机器的ip 通过p ...
- Atitit.android播放smb 网络邻居视频文件解决方案
Atitit.android播放smb 网络邻居视频文件解决方案 Android4.4 1.1. Android4视频播放器不能直接地支持smb协议..子好先转换成个http流 1.2. ES文件浏览 ...
- Atitit smb网络邻居原理与实现查询列表
Atitit smb网络邻居原理与实现查询列表 1.1. SAMBA的起源1 1.2. Smb是否依赖unpn SSDP ,还是使用扫描遍历0-255发现原理1 2. SMB共享不成功原因分享(WI ...
- C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息>中,返回的楼层信息结果中包含了楼层的具体信 ...
- Atitit 在线支付系统功能设计原理与解决方案 与目录
Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...
- atitit.获取北京时间CST 功能api总结 O7
atitit.获取北京时间CST 功能api总结 O7 1. 获取cst时间(北京时间)两布:1.抓取url timtstamp >>format 到cst 1 2. 设置本机时间 se ...
- VNF网络性能提升解决方案及实践
VNF网络性能提升解决方案及实践 2016年7月 作者: 王智民 贡献者: 创建时间: 2016-7-20 稳定程度: 初稿 修改历史 版本 日期 修订人 说明 1.0 20 ...
- Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系
Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系 1. Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似 ...
- 获取主机信息,网络信息AIP,getsockname,getpeername,getservbyname,getservbyport,inet_ntop,inet_pton
获取主机信息 1.ip地址转换,主机字节序 <---> 网络字节序 #include <arpa/inet.h> int inet_pton(int af, const cha ...
随机推荐
- InfluxDB写流程
Influxdb version1.8 HTTP: 0x00000000016d0ce3 in github.com/influxdata/influxdb/coordinator.(*PointsW ...
- ab并发负载压力测试
一.ab 0.安装ab压力测试软件 [root@a2 conf]# yum install httpd-tools -y #查看版本 [root@a2 conf]# ab -V This is Apa ...
- centos7 yum安装redis(转)
正如我们所知的那样,Redis是一个开源的.基于BSD许可证的,基于内存的.键值存储NoSQL数据库.Redis经常被视为一个数据结构服务器,因为Redis支持字符串strings.哈希hashes. ...
- IOS APP 上传到AppStore
由于第一次接触要把 app 上传到 AppStore 比较棘手,很多地方不懂,研究了 大半天 终于给上传成功了,现在坐等审核吧,首先把上传到AppStore的流程 整理下 : 第一 :准备证书 (要确 ...
- hadoop运行报错Wrong FS: hdfs:/, expected: file:///
内容源自:https://blog.csdn.net/u014470581/article/details/51480600 报错信息: Exception in thread "main& ...
- 十招让Ubuntu 16.04用起来更得心应手
Ubuntu 16.04是一种长期支持版本(LTS),是Canonical承诺发布五年的更新版.也就是说,你可以让这个版本在电脑上运行五年!这样一来,一开始就设置好显得特别重要.你应该确保你的软件是最 ...
- centos6.8服务器配置之SVN配置
version 1.6.11 一.安装:因对版本要求不高,所以采用yum安装 yum install -y svn 二.配置 1.创建仓库,以后所有代码都放在这个下面,创建成功后在svn下面多了几个文 ...
- Win7是否可以把光盘当作U盘用
光盘当作U盘用 在Windows 7刻录功能中,之前有看到一篇文章<Windows7 新功能 光盘当U盘用>(感兴趣的同学可以百度一下),文章的意思大致是说作者插入了一张空的DVD光盘,然 ...
- 从客户端的角度来谈谈移动端IM的消息可靠性和送达机制
1.前言 IM App 是我做过 App 类型里复杂度最高的一类,里面可供深究探讨的技术难点非常之多.这篇文章和大家聊下从移动端客户端的角度所关注的IM消息可靠性和送达机制(因为我个人对移动客户端的经 ...
- Unity3d网络游戏Socket通讯
http://blog.csdn.net/wu5101608/article/details/37999409