java如何获取局域网内所有IP

做个jframe小程序,在加载时将局域网内所有IP和主机名用流布局显示在窗体上!

4个回答

 需要遍历局域网IP的,大体分为两步:: 1.得到局域网网段,可由自己机器的IP来确定 2.根据IP类型,一次遍历局域网内IP地址 我给你一个JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可 代码如下:package bean;

import java.io.*;
import java.util.*;

public cl......
答案就在这里:java获取局域网IP
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

 package com.jn.lan;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.util.StringTokenizer;
import java.util.Vector;

import com.common.util.SystemHWUtil;
import com.string.widget.util.ValueWidget;

public class LANIP {
    public static InetAddress[] getAllOnline() {
        // TODO Auto-generated method stub
        Vector v = new Vector(50);
        try {
            // Process process1 =
            // Runtime.getRuntime().exec("ping -w 2 -n 1 192.168.1.%i");
            // process1.destroy();
            Process process = Runtime.getRuntime().exec("arp -a");
            InputStreamReader inputStr = new InputStreamReader(
                    process.getInputStream(), "GBK");
            BufferedReader br = new BufferedReader(inputStr);
            String temp = "";
            br.readLine();
            br.readLine();
            br.readLine();// 此后开始读取IP地址,之前为描述信息,忽略。
            while ((temp = br.readLine()) != null) {
                System.out.println(temp);
                if (!ValueWidget.isNullOrEmpty(temp)) {
                    StringTokenizer tokens = new StringTokenizer(temp);
                    String x;
                    InetAddress add=null;
                    try {
                        add = InetAddress.getByName(x = tokens
                                .nextToken());
                    } catch (java.net.UnknownHostException e) {
                        continue;
                    }
                    // System.out.println(x);
                    v.add(add);
                    // System.out.println(add);
                }
            }
            System.out.println(SystemHWUtil.DIVIDING_LINE);
            v.add(InetAddress.getLocalHost());
            process.destroy();
            br.close();
            inputStr.close();
        } catch (Exception e) {
            System.out.println("可能是网络不可用。");
            e.printStackTrace();
        }
        int cap = v.size();
        InetAddress[] addrs = new InetAddress[cap];
        for (int i = 0; i < cap; i++) {
            addrs[i] = (InetAddress) v.elementAt(i);
             System.out.println(addrs[i]);
        }
        return addrs;

    }

    public static void main(String args[]) {
        InetAddress[] i = new LANIP().getAllOnline();
    }
}

caozhy
贵阳老马马善福专门编写代码的老马就是我! 这代码基本不奏效,因为它靠遍历网段ip,并且每个ping一次的办法来判断,但是现在几乎所有的pc的防火墙都关掉了icmp。ping不通不等于这个ip不存在。
大约 4 年之前 回复

jframe要求跨平台吗?

1.得到局域网网段,可由自己机器的IP来确定
2.根据IP类型,一次遍历局域网内IP地址

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java获取局域网内所有ip信息
1.获取本机的地址 package com.uwo9.test01; import java.net.InetAddress; import java.net.UnknownHostException; public class Test01 { public static void main(String[] args) { InetAddress iAddress; InetA
如何获取局域网内所有IP
在学校内的校园网rn有很多个IP段,目前我还不知道有多少个IP段rn主要是172.19.*.*rnrn现在我想获取所有在此局域网内的计算机IPrn如何做到?rn能不能不是遍历IP啊,那样非常麻烦……rn网关是172.19.23.254
获取局域网内所有在线IP
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using ...
asp.net获取局域网内所有ip
怎么获取一个小局域网内的所有ip和主机名啊?
获取局域网内所有pc的ip
从网上找到的代码:rn[code=C/C++]rnvoid CGetLANAllIpDlg::FindAllComputer(CStringArray& MyList)rn rn MyList.RemoveAll();rn CString StrTemp; rn struct hostent *host;rn struct in_addr *ptr; rn DWORD dwScope = RESOURCE_CONTEXT;rn NETRESOURCE *NetResource = NULL;rn HANDLE hEnum;rn WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );rn WSADATA wsaData;rn //开始搜索网络资源rn WSAStartup(MAKEWORD(1,1),&wsaData);rn //如果句柄有效rn if ( hEnum ) rn rn DWORD Count = 0xFFFFFFFF;rn DWORD BufferSize = 2048;rn LPVOID Buffer = new char[2048];rn //调用WSAStartup后调用WNetEnumResource做进一步的搜索工作rn WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );rn NetResource = (NETRESOURCE*)Buffer;rn char StrHostName[200];rn for ( unsigned int i = 0; i < BufferSize/sizeof(NETRESOURCE); i++, NetResource++ ) rn rn if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY ) rn rn if ( NetResource->lpRemoteName )rn rn CString strFullName = NetResource->lpRemoteName;rn if ( 0 == strFullName.Left(2).Compare("\\\\") ) rn strFullName = strFullName.Right(strFullName.GetLength()-2); rn //获得主机名rn gethostname( StrHostName, strlen( StrHostName ) );rn //由主机名获得跟它对应的主机信息rn host = gethostbyname(strFullName);rn if(host == NULL) continue; rn ptr = (struct in_addr *) host->h_addr_list[0]; rn // 提取IP地址信息,地址形式如下: 211.40.35.76 rn int a = ptr->S_un.S_un_b.s_b1; // 211 rn int b = ptr->S_un.S_un_b.s_b2; // 40rn int c = ptr->S_un.S_un_b.s_b3; // 35rn int d = ptr->S_un.S_un_b.s_b4; // 76rn StrTemp.Format("%s : %d.%d.%d.%d",strFullName,a,b,c,d);rn // 加入到链表中rn MyList.Add(StrTemp);rn rn rn rn delete Buffer;rn // 结束搜索工作rn WNetCloseEnum( hEnum ); rn rn // 卸载Winsock.dllrn WSACleanup();rnrn[/code]rn从网上找到的我就能够运行,自己写了一下(就是给这个函数copy过去),就出现了连接的错误!rn[code=C/C++]rn1>GetLANAllIpDlg.obj : error LNK2019: 无法解析的外部符号 _WNetCloseEnum@4,该符号在函数 "public: void __thiscall CGetLANAllIpDlg::FindAllComputer(class CStringArray &)" (?FindAllComputer@CGetLANAllIpDlg@@QAEXAAVCStringArray@@@Z) 中被引用rn1>GetLANAllIpDlg.obj : error LNK2019: 无法解析的外部符号 _WNetEnumResourceA@16,该符号在函数 "public: void __thiscall CGetLANAllIpDlg::FindAllComputer(class CStringArray &)" (?FindAllComputer@CGetLANAllIpDlg@@QAEXAAVCStringArray@@@Z) 中被引用rn1>GetLANAllIpDlg.obj : error LNK2019: 无法解析的外部符号 _WNetOpenEnumA@20,该符号在函数 "public: void __thiscall CGetLANAllIpDlg::FindAllComputer(class CStringArray &)" (?FindAllComputer@CGetLANAllIpDlg@@QAEXAAVCStringArray@@@Z) 中被引用rn1>D:\xiaoh\VS2008\GetLANAllIp\Debug\GetLANAllIp.exe : fatal error LNK1120: 3 个无法解析的外部命令rn[/code]rn应该是缺少什么库文件或连接的,我应该怎么弄啊?rn在网上找了一下,说是应该rn#pragma comment( lib, "mpr.dll" )rn但是我加上了之后,会提示无法加载啊……rn问题何在啊???
获取局域网内的所有主机的IP
个人想要做个小工具,能够获取局域网内的所有主机的IP地址,但是头脑中没啥想法,希望各位大虾提供点参考意见,当然最好是将底层的原理解释清楚,大家可以一起讨论讨论 。。。
c#获取局域网内的所有ip
局域网内的获取所有的ip地址,是否要通过线程或者其他方法?
获取局域网内所有机器名和IP(例子)
先找到机器名,把找到的所有机器名存于c:\\xyq.txt,然后把机器名转换成ip,最后删除c:\\xyq.txt using System.Collections; //using System.Management;using System.Net;using System.Net.Sockets;                 //++++++++++++++++++========...
Ping局域网内所有IP
DOS命令符BAT文件,Ping局域网内所有IP,并生成通和不通两个文本。
如何获得局域网内的所有计算机IP?
如题!
如何取得局域网内所有机器的IP
我想知道使用哪个命令可以取得局域网内所有机器的IP?不想安装工具!
如何获得局域网内所有机器的IP?
如题!
获取局域网内的IP地址
通过程序生成可视化界面,点击按钮可以获取局域网内的计算机名称和ip地址
获取局域网内的在线IP
请问怎样可以取的局域网内在线机器的IP???
如何获取局域网内的所有数据源?
如题:如何获取局域网内的所有数据源?
如何获取局域网内所有机器名
我用的方法是:rnArrayList arr = new ArrayList();rnDirectoryEntry root = new DirectoryEntry("WinNT:");rnrn foreach(DirectoryEntry domain in root.Children)rn rn foreach(DirectoryEntry computer in domain.Children)rn rn arr.Add(computer.Name);rn rn rnrn这样得到的东西太多,包括AD内内所有用户等信息,如何只得到机器名呢?
如何获取局域网内所有可用的打印机?
我想做一个窗体~ 获取局域网内所有可用的打印机~ 就像windows的打印窗体那样?但不想使用printDialog~
如何获取局域网内浏览者IP和机器名?
如何获取局域网内(同一网段)浏览者IP和机器名?rn用.net技术,用C#在局域网内建一网站,如何在浏览者浏览时获取浏览主机的机器名?rn试了很多:rn Request.ServerVariables["REMOTE_ADDR"] 返回客户端IPrn Request.ServerVariables["REMOTE_HOST"] 返回客户端IP,不知为什么不是主机名rn Request.UserHostAddress; 返回客户端IPrn Request.UserHostName; 有时不能获取计算机名,而是客户端IP,原因未知.rn Dns.GetHostName() 获取服务器主机名(是在服务器编译生成的网站)rn正在试验GetHostByName(string HostName),可是只要HostName是局域网内不存在的机器名,出错;是存在的机器名,都统一返回同一IP,并且这一IP不是机器设置的?rnrn郁闷呀!rnrnrn
网络通信的问题:如何获取局域网内的所有IP? 请教高手
如题 要如何去获取网内的所有IP.有没有相关的类 谢谢rn
如何获取局域网内所有机器的IP地址和机器名!!!!!!
我把我自己的机器设为主机!rn只要获取正在运行的机器的就可以了!rn最好思路清晰!如果有详细代码并解释的会给予再加分!rn
如何获取局域网内的IP地址
有的时候需要根据IP或MAC来限定登录的计算机,请问如何来获取局域网中的IP地址呢?
如何获取局域网内计算机的ip,计算机名?
如何获取局域网内计算机的ip,计算机名?
如何获取局域网内的ip地址
我办公室里的一台电脑安装的是winxp,该台电脑是通过一个路由器实现共享上网的,而且所有的端口是开放的。现在我在这台机器上设置了允许远程访问本台机器,而希望通过家里的电脑远程访问办公室里的电脑。但却不知道在连接办公室的电脑时,这个ip地址应该是什么。
Android如何获取局域网内所有设备的IP和名称
急求方法,最好有源码。rn如何获取局域网内所有设备的IP和名称,最好有源码demo。rn谢谢!
如何获取局域网内的计算机名和IP地址
如何在Delphi5中获取局域网内的所有计算机名和IP地址并在TreeView控件中显示出来?
如何获得某局域网内的网内ip?
现在得到的ip只能是外网的,能不能获取它的内容地址呢?
c#实现搜素局域网内所有IP
c#实现搜素局域网内所有IP c#实现搜素局域网内所有IP
获得局域网内所有IP vc实现
vc实现了获得局域网内所有pc的IP地址及主机描述,win32
iOS 扫描局域网内的所有IP地址
How Scan devices in a LAN network iOS 扫描局域网内的所有IP地址 客户端通过向局域网广播udp广播,并监听udp端口,通过返回的数据来扫描局域网的ip地址。 示例文章和代码如下: How Scan devices in a LAN network http://blog.csdn.net/johns_xiao/
求局域网内所有IP和计算机名下拉列表
求局域网内所有IP和计算机名下拉列表rn最好是写在一个方法里我一调的
如何获取局域网内的数据库服务器?
如何获取局域网内的数据库服务器及对应的数据库?
Linux C关于获取局域网内当前所有已用IP
如题,想要获取局域网内所有已经占用的IP,这个应该怎么实现比较好?
怎么用c++ 获取局域网内的所有IP
大家最好说清楚一点rn我对网络编程不怎么了解rn先谢谢了~!
求 获取局域网内所有已开机机器的IP地址
arp -a获取到的列表不全rn枚举的话,局域网IP段又不确定(,况且知道的话也要枚举600秒(假设10毫秒延迟)。实在是不敢用)rnrnrn求枚举方法!rnrnrn谢谢。。rn谢谢谢。。rn谢谢谢谢。。rn谢谢谢谢谢。。
怎样获取局域网内所有机器的名字及IP地址?
-
怎样获取局域网内的所有IP 和主机名称????高手指教!!!!
怎样获取局域网内的所有IP 和主机名称????高手指教!!!!(vb.net)
C#获取局域网内所有计算机的IP地址和MAC地址
C#实现获取局域网内所有计算机的IP地址和MAC地址的控制台应用程序源码 程序启动时首先获取本机的IP和MAC地址; 然后获取局域网内所有计算机的IP地址; 输入IP地址回车,获取该IP的MAC地址; 输入“STARTSCAN”回车,重新获取局域网内所有计算机的IP地址; 输入“ALLSCAN”回车,获取网段内所有IP(0-255)的MAC地址 代码见压缩包
如何获取局域网内计算机名
大家好:rn最近在编写程序的时候遇到了一个需要根据给的IP地址获得局域网内计算机名的问题,查了些相关资料,只发现了通过gethostbyaddr()函数获取的方法,经过测试,发现只能取成功本机的机器名,取得其他机器该信息的时候,返回的错误是11004,含义是“请求的名称有效并且是在数据库中找到,但是它没有相关的正确的数据。 ”,然后我想了想,gethostbyaddr()应该是查DNS等进行解析,由于本机比较独立,登陆的时候也没登陆过其他域里边去,所以可能查询DNS失败,没查询到数据。rn结果,gethostbyaddr()通过IP地址获取计算机名的方法失败。rn现在向大家请教一下,是否还有其他的能够取得局域网计算机名的方法,非常感谢。rn如果代码较多,是否可以发到我的email中:wjwwillwin263@263.netrn
获取局域网内在线的所有主机名及其IP地址
获取局域网内在线的所有主机名及其IP地址rn Author:swun911rn blog.sina.com.cn/swunrn 偶想搜索到局域网内所有在线的主机并获得其地址,使用了API的WNetEnumResource和gethostbyname。实现倒是实现了,可就是特别的慢,请指教。不知道各位高手有什么妙招,请赐教!rn My Emai:56557833@qq.comrn 我实现该目的部分的代码如下:rn//**************************************************************************************rn //获取主机名 rn dorn rn EnumLocal = (LPNETRESOURCE) GlobalAlloc( GPTR, dwBuffer ) ; rn dwResult = WNetEnumResource(hEnum,&dwEntries,EnumLocal,&dwBuffer); rn if( dwResult == NO_ERROR )rn rn int kyy=0; rn for( register DWORD i = 0 ; i < dwEntries ; i++ ) rn rn CString Enumname;rn Enumname = EnumLocal[i].lpRemoteName;rn Enumname += " ";rn Enumname +=EnumLocal[i].lpLocalName;rn Enumname += " ";rn Enumname +=EnumLocal[i].lpComment;rn CString Filtrate = Enumname.Left(1);rn if(Filtrate=='\\')rn rn CString Inputname,IPAddress;rn Inputname=Enumname.Right(Enumname.GetLength()-2);//去掉"\\"rn Inputname=Inputname.SpanExcluding(" ");//去掉空格及其以后的部分rn GetIPAddress(Inputname,IPAddress);rn userinfo[kyy].h_name=Inputname;rn userinfo[kyy].h_IPadd=IPAddress;rn userinfo[kyy+1].h_name="xxx";rn kyy++;rn rn rn rn while( dwResult != ERROR_NO_MORE_ITEMS ); rn//****************************************************************************rn //IP地址rn GetIPAddress(CString &HostName, CString &IPAddress)rn rn struct hostent FAR *pIPHostEnt=gethostbyname(HostName);rn if (pIPHostEnt==NULL)rn rn IPAddress=_T("获取地址失败!");rn return GetLastError();rn rnrn LPSTR IPAddr=pIPHostEnt->h_addr_list[0];rn if(IPAddr)rn rn struct in_addr inAddr;rn memmove(&inAddr,IPAddr,4);rn IPAddress=inet_ntoa(inAddr);rn if(IPAddress.IsEmpty())rn rn IPAddress=_T("没有取得IP");rn AfxMessageBox(IPAddress);rn rn rn return 0;rn
C++获取局域网内所有活动的主机Ip和名称
如题rn  如果能用Java实现也可以
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法