怎么建立个局域网内的IP地址数据库?

怎么建立个局域网内的IP地址数据库?,第1张

当然可以,这样就可以实现,不用数据库都行了:

<%

ip=Request.ServerVariables("REMOTE_ADDR")

select case ip

case "10.10.10.1"

ipp="一号宿舍"

case "10.10.10.2"

ipp="二号宿舍"

case "10.10.10.3"

ipp="三号宿舍"

'...

end select

response.write("你是"&ipp&"的同学!")

%>

也可以把case程序写成一个函数,调用函数即可.

首先保证两台计算机能够ping 通,并知道两台计算机IP地址

如A机器: 192.168.0.10  (装有oracle数据库)

  B机器: 192.168.0.11

在B机器上安装oracle客户端(client)软件

配置tnsnames.ora文件(该文件在客户端安装位置的network/admin下,如:D:\oracle\product\11.2.0\client_1\network\admin)

tnsname.ora文件配置大致如下:

ORCL =

(DESCRIPTION =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))

  )

  (CONNECT_DATA =

    (SERVICE_NAME = orcl)

  )

)

其中hostname 是数据库服务器IP地址,service_name是数据库服务名(一般情况下与数据库名一致)

在B机器上命令行通过sqlplus scott/tiger@orcl 来连接数据库

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=1i <=255i++){ //对所有局域网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 <7i++)

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){}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10824036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存