日期:2014-05-18  浏览次数:20704 次

如何用jsp获得局域网内各个机器的IP
现在实验室需要自动管理里面的机器,需要能够通过web获得并更新实验室局域网内全部机器的ip等相关信息,以便于管理。
现在的实验环境就是用tomcat和jsp,通过程序的方式获得。希望能详细一些,到代码级

我试过写
<html>
<%
String ipAddr = (String)request.getRemoteAddr();
%>
<head>
</head>
<body onLoad="start();">
<script>
function start() {
var ipAddrL = '<%=ipAddr.trim()%>';
alert(ipAddrL);
}
</script>
</body>
</html>
但是request没有
请各位大侠指点!
是学生,水平有限,分不多,谢谢大家!!

------解决方案--------------------
http://topic.csdn.net/t/20061124/10/5181749.html
用js
  
在网上给你找一个看下

------解决方案--------------------
ServerSocket全网监听,传入一个通用的端口号(PORT) 比如80
只是个思路...


------解决方案--------------------
需要遍历局域网IP的,大体分为两步:: 
1.得到局域网网段,可由自己机器的IP来确定 
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){} 
}