「通过ip查地址java」能否通过ip查到地址
今天给各位分享通过ip查地址java的知识,其中也会对能否通过ip查到地址进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java中怎样写通过IP查到城市地址的代码
- 2、java如何确认IP是否属于某地址段
- 3、java根据ip地址获取相应的所在地,精确到街道和门牌号,要怎么实现?
- 4、用java 编写一个可以实现IP地址查询功能的课程设计
- 5、如何获取局域网内所有IP地址 java代码
java中怎样写通过IP查到城市地址的代码
你去下载一个纯真ip查询的软件 然后把里边的地址导出来 是一个txt的文件
里边的格式是这样的
1.4.5.0 1.4.63.255 福建省 电信
1.4.64.0 1.4.127.255 广东省 电信
1.4.128.0 1.8.255.255 福建省 电信
前2个是ip 最后一个是地址
......然后就不用我多说了把........
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转换为二进制之后分别和二进制子网掩码做逻辑与,结果一致是不是就可以定义为同一网段;
网络中对网段的定义我也不太了解,不知道你是要遵循网络中的定义还是按你自己的需求来;
java根据ip地址获取相应的所在地,精确到街道和门牌号,要怎么实现?
这个与具体程序实现没有关系。 主要看你采用了多精确的 IP数据库。
据说 纯真IP地址数据库 相对比较精确,还有其他的,你可以找找。
用java 编写一个可以实现IP地址查询功能的课程设计
下面是获得本机IP地址的方法,跟你的程序捆绑起来,互相发送消息的时候直接将IP发送过去
private static String[] getAllLocalHostIP(){
ListString res=new ArrayListString();
Enumeration netInterfaces;
try {
netInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
Enumeration nii=ni.getInetAddresses();
while(nii.hasMoreElements()){
ip = (InetAddress) nii.nextElement();
if (ip.getHostAddress().indexOf(":") == -1) {
res.add(ip.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
return (String[])res.toArray(new String[0]);
}
这是个扫描局域网ip的windows解决方案,在unix系统下可能有问题
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
public class LanIP {
public ArrayListString getLanIPArrayList() {
ArrayListString arrayIP = null;
try {
InitSystem initSystem = null;
initSystem = new InitSystem();
Thread thread = new Thread(initSystem);
thread.start();
thread.join();
arrayIP = initSystem.getArrayIPUsed();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return arrayIP;
}
private class InitSystem implements Runnable {
private int firstIP = 2;// 查询的 IP 地址的最后一位起始点
private int lastIP = 255;// 查询的 IP 地址的最后一位结束点
private volatile ArrayListThread arrayThread;// 子线程段
private final int MAXTHREADNUM = 30; // 最大同时进行的子线程数量
private int threadNumNow;// 当前正在进行的子线程数量
private volatile ArrayListString arrayIP;// 局域网查询所有可能的 IP 地址的结果集
private volatile ArrayListString arrayIPUsed;// 局域网查询已经使用的 IP 地址的结果集
private InitSystem(String ip) {
arrayIP = new ArrayListString();
arrayIPUsed = new ArrayListString();
arrayThread = new ArrayListThread();
setIPAddressList(ip);
}
private InitSystem() throws UnknownHostException {
this(InetAddress.getLocalHost().getHostAddress());
}
private synchronized ArrayListString getArrayIPUsed() {
try {
while (arrayIP.size() 0) {
Thread.sleep(300);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return arrayIPUsed;
}
private void setIPAddressList(String ip) {
// 根据这个 ip 地址查询它所在的局域网的所有可能 IP 地址的集合
int lastPointIndex = ip.lastIndexOf('.');
String stringIPHead = ip.substring(0, ++lastPointIndex);
String stringIP = null;
for (int i = firstIP; i = lastIP; i++) {
stringIP = stringIPHead + i;
arrayIP.add(stringIP);
}
}
public void run() {
synchronized (this) {
try {
while (arrayIP.size() 0) {
while (threadNumNow = MAXTHREADNUM) {
for (Thread thread : arrayThread) {
if (!thread.getState().equals(
Thread.State.TERMINATED)) {
thread.join(5);
}
--threadNumNow;
}
arrayThread = new ArrayListThread();
}
Thread thread = new Thread(new InnerClass(arrayIP
.remove(0)));
thread.start();
threadNumNow++;
arrayThread.add(thread);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private class InnerClass implements Runnable {
// 线程查询一个 IP 是否是可以连接的 是则加入到相应的 IP 数组
private String ip;
private InnerClass(String ip) {
this.ip = ip;
}
private boolean isUsedIPAddress(String ip) {
synchronized (this) {
// 判断这个 IP 地址在当前局域网中是否是可连接的 IP
Process process = null;
BufferedReader bufReader = null;
String bufReadLineString = null;
try {
process = Runtime.getRuntime().exec(
"ping " + ip + " -w 100 -n 1");
bufReader = new BufferedReader(new InputStreamReader(
process.getInputStream()));
for (int i = 0; i 6 bufReader != null; i++) {
bufReader.readLine();
}
bufReadLineString = bufReader.readLine();
if (bufReadLineString == null) {
process.destroy();
return false;
}
if (bufReadLineString.indexOf("timed out") 0
|| bufReadLineString.length() 17
|| bufReadLineString.indexOf("invalid") 0) {
process.destroy();
return false;
}
} catch (IOException e) {
e.printStackTrace();
}
process.destroy();
return true;
}
}
public void run() {
synchronized (this) {
if (isUsedIPAddress(ip)) {
arrayIPUsed.add(ip);
}
}
}
}
}
}
如何获取局域网内所有IP地址 java代码
1.得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)
2.根据IP类型,一次遍历局域网内IP地址
JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可
代码如下::
package bean;
import java.io.*;
import java.util.*;
public class Ip{
static public HashMap ping; //ping 后的结果集
public HashMap getPing(){ //用来得到ping后的结果集
return ping;
}
//当前线程的数量, 防止过多线程摧毁电脑
static int threadCount = 0;
public Ip() {
ping = new HashMap();
}
public void Ping(String ip) throws Exception{
//最多30个线程
while(threadCount30)
Thread.sleep(50);
threadCount +=1;
PingIp p = new PingIp(ip);
p.start();
}
public void PingAll() throws Exception{
//首先得到本机的IP,得到网段
InetAddress host = InetAddress.getLocalHost();
String hostAddress = host.getHostAddress();
int k=0;
k=hostAddress.lastIndexOf(".");
String ss = hostAddress.substring(0,k+1);
for(int i=1;i =255;i++){ //对所有局域网Ip
String iip=ss+i;
Ping(iip);
}
//等着所有Ping结束
while(threadCount0)
Thread.sleep(50);
}
public static void main(String[] args) throws Exception{
Ip ip= new Ip();
ip.PingAll();
java.util.Set entries = ping.entrySet();
Iterator iter=entries.iterator();
String k;
while(iter.hasNext()){
Map.Entry entry=(Map.Entry)iter.next();
String key=(String)entry.getKey();
String value=(String)entry.getValue();
if(value.equals("true"))
System.out.println(key+"--"+value);
}
}
class PingIp extends Thread{
public String ip; // IP
public PingIp(String ip){
this.ip=ip;
}
public void run(){
try{
Process p= Runtime.getRuntime().exec ("ping "+ip+ " -w 300 -n 1");
InputStreamReader ir = new InputStreamReader(p.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
//读取结果行
for (int i=1 ; i 7; i++)
input.readLine();
String line= input.readLine();
if (line.length() 17 || line.substring(8,17).equals("timed out"))
ping.put(ip,"false");
else
ping.put(ip,"true");
//线程结束
threadCount -= 1;
}catch (IOException e){}
}
}
}
关于通过ip查地址java和能否通过ip查到地址的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。