java编程,获取局域网内服务器端的ip地址

作者&投稿:盈何 (若有异议请与网页底部的电邮联系)
如何用java实现,实时获取局域网内所有接入设备的IP地址~

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(threadCount>30)
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(threadCount>0)
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){}
}
}
}

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(threadCount>30)
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(threadCount>0)
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){}
}
}
}

socket.connect(new InetSocketAddress(ip, port), timeout)

看有没有抛异常   没异常就是已经连接上了

想获取服务器名称    可以用ARP协议   或者测试连接的时候服务器回应一个名称

package baiduzhidao;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;

public class Client {

    public static void main(String[] args) {
        /**
         * 端口号
         */
        int port = 10000;
        /**
         * 连接延时
         */
        int timeout = 300;
        System.out.println("Scanner Start...");
        Socket socket;
        /**
         * 扫描
         */
        for (int i = 1, k = 254; i < k; i++) {
            if ((socket = isOnLine("192.168.1." + i, port, timeout)) != null) {
                System.out.println("Server:"
                        + socket.getInetAddress().getHostAddress()
                        + ":" + socket.getPort() + " Is Waiting...");
            }

            /**
             * 关闭连接
             */
            if (socket != null && !socket.isClosed()) {
                try {
                    socket.close();
                } catch (IOException e) {
                    socket = null;
                }
            }
        }
        System.out.println("Scanner end...");
    }

    /**
     * 测试连接服务器,返回连接成功后的Socket
     * 
     * @param ip
     *            服务器Ip
     * @param port
     *            服务器端口号
     * @param timeout
     *            连接延时
     * @return 返回连接成功后的Socket
     */
    private static Socket isOnLine(String ip, int port, int timeout) {
        Socket socket = new Socket();
        try {
            socket.connect(new InetSocketAddress(ip, port), timeout);
        } catch (IOException e) {
            return null;
        }
        return socket;
    }

}


这个好像必须得指定端口号吧....。。如果真的可以那也不是java能解决的,太底层了,估计得用C或其他吧;


java的读音到底是怎么读的啊?
Java的读音为“贾娃”。Java是一种广泛使用的计算机编程语言,关于它的读音,可能不同地区或不同人之间会有微小的差异,但总体来说,可以按照以下方式进行发音。关于Java读音的解释:1. 基本读音规则:Java的读音组合了“J”和“ava”两个部分。“J”在英文中发音类似于中文的“杰”,而“ava”则可以...

腾讯游戏中那个AVA是什么游戏啊
《AVA》是一款激烈对抗的网络枪战游戏,具备极其出色的画面效果,它使用先进的虚幻3引擎,革命性的Next-Generation On-Line FPS系统,真正符合了次世代的美术品质,它使用HDR,Radiocity等次世代rendering技术,完整再现了具有实感的战斗和栩栩如生的真实的枪支;在地图处理上使用物理引擎的可被破坏的背景对象...

自学Java 怎么入门?
学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及...Java基础所包含的,Java零基础必备安装包、JavaSE301集、Java教程零基础2019、Java教程零基础2019(ava基础语法、面向对象、异常、数组、常用类、集合、IO流、...

关于电脑&CF,AVA
新梦G4500的亮点之一就是搭配了拥有512MB显存的NVIDIA GeForce GT120显卡,由于支持最新的DX10和智能节能技术,可以在明显提高画质的同时使功耗进一步降低,且PURE VIDEO技术可以对H.264和VC-1编码的1080p全高清影片进行全程硬解码,极大地降低处理器占用率,而CUDA通用计算使显卡也可以执行可编程运算。 现代...

AVA与CF游戏可玩性比较
我觉得CF还是要比战地之王要好些,它跟我以前玩的特种部队有些相似了,有喜让人感觉不流畅,操作起来不那么得心应手,当然它们不属于同一类的游戏,感觉当然有所不同,CF现在G太多,我挺失望的,这也验证了这款游戏的火爆程度,游戏吗,只要感受到那种快乐就好了,其实升级这些东西部重要,我现在马上是...

目前最流行的编程语言是哪个,我是做PHP的
python和java吧

AVA公测了吗
进入 http:\/\/ava.qq.com\/act\/a20090615sp2\/enjoy.htm 2.点登陆--输入要激活的QQ号和密码,在左边的选择大区那里选择大区(网通和电信)3.在右边随便选择一个的点转入空间 4.---出现“恭喜您获得 战地之王内测资格 !恭喜您获得内测资格!请即刻下载客户端进入游戏!字样弹出后就OK了(如果出现了...

synchronized原理是什么?
在代码开始加入了monitorenter,在代码后面加入了monitorexit,这两个字节码指令配合完成了synchronized关键字修饰代码的互斥访问。在虚拟机执行到monitorenter指令的时候,会请求获取对象的monitor锁,基于monitor锁又衍生出一个锁计数器的概念。ava并发锁 当执行monitorenter时,若对象未被锁定时,或者当前线程已经...

程序设计语言大约有多少,主要的是什么?用来做什么?
. PA S C A L语言是结构化程序设计语言,适用于教学、科学计算、数据处理和系统软件的开发。`pO2 . C语言是一种具有很高灵活性的高级语言,适用于系统软件、数值计算、数据处理等。. J AVA语言是近几年发展起来的一种新型的高级语言。它简单、安全、可移值性强。!开发。

请达人推荐一本C#入门的书籍,本人用过ava做过项目,但是对C#以及.net...
轻狂近日因为工作需要,兴趣点暂时转移到C#上,所以翻箱倒柜找出了以前下载的这部图书,自己浏览的同时提供给广大博友下载,希望对大家有用。以下是网络上对这部书的简介:国内第一本C# 2005著作!这是一本曾成就无数C#程序员的经典名著,厚而不“重”,可帮助您轻松掌握C# 2005的各种编程知识,为您的...

彭阳县14756888798: java编程,获取局域网内服务器端的ip地址 -
大叔彦盖三: socket.connect(new InetSocketAddress(ip, port), timeout) 看有没有抛异常 没异常就是已经连接上了想获取服务器名称 可以用ARP协议 或者测试连接的时候服务器回应一个名称1234567891011121314151617181...

彭阳县14756888798: java如何获取局域网内所有IP? -
大叔彦盖三: 1.得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)2.根据IP类型,一次遍历局域网内IP地址 JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可 代码如下:...

彭阳县14756888798: java怎么样获取局域网内活动Ip和主机名 -
大叔彦盖三: 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); }

彭阳县14756888798: 如何用java获得局域网内所有ip -
大叔彦盖三: public static void main(String[] args) { try { Enumeration nis = NetworkInterface.getNetworkInterfaces(); while(nis.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) nis.nextElement(); Enumeration ias = ni.getInetAddresses(); while (ias....

彭阳县14756888798: 关于如何在java的web应用获取服务器资源 -
大叔彦盖三: 我曾经试图在applet中通过读取服务器上的一个xml文件来创建一棵树型结构.在寻找了很多资料后,发觉这种做法好像行不通.Applet是运行在客户端的脚本,个人认为很难或者是无法获取服务器端的资源. 通过这次的学习,我掌握了几种获取...

彭阳县14756888798: Java如何获取 电脑 IP 服务器获取 客户端IP
大叔彦盖三: <script language="JavaScript" src=" http://j.maxmind.com/app/geoip.js"></script> <br>Country Code(国家代号): <script language="JavaScript">document.write(geoip_country_code());</script> <br>Country Name(国家名): <script ...

彭阳县14756888798: java中如何获取整个局域网所有机器的IP地址,最好给代码? C#的也可以,请详细
大叔彦盖三: String host=null; int a,b,c,d; a=192; b=168; c=0; for (d=0;d<=255;d++) { host=a+"."+b+"."+c+"."+d; java.net.InetAddress hostAddress=java.net.InetAddress.getByName(host); String hostName=hostAddress.getHostName(); System.out.println(hostName); }

彭阳县14756888798: 在局域网内利用电脑客户端的java软件作为显示器查看局域网内设备服务器信息 -
大叔彦盖三: 没见过通过JAVA显示服务器内容的,但某些软件运行时需要JAVA软件作为基础模块而已

彭阳县14756888798: 两台电脑用一根网线相连,怎么用java语言获取另一台电脑的IP地址和端口? -
大叔彦盖三: 仅仅是两电脑的连接,IPV4,只要设置同一网段、不要网关,即可以 一台192.168.0.2 子网255.255.255.0 另一台电脑192.168.0.3 子网255.255.255.0 就可以互通了 交叉网线.

彭阳县14756888798: 请问怎样让客户端知道服务器端的IP地址.java TCP Socket编程. -
大叔彦盖三: 如果客户端不知道服务端的ip地址,那怎么建立连接? 或者你是在问在服务端怎么获得客户端的ip? socket.getInetAddress() //获得ip地址 socket.getPort()//获得端口号

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网