java如何实现对本机的ip地址 网关地址 子网

java如何实现对本机的ip地址 网关地址 子网,第1张

提供一种可行的方法。供你参考。思路是利用 *** 作系统的shell,执行相应的命令。

以下以WINDOW *** 作系统为例。LINUX的思路相同。

1,在E;\下建立如下两个bat文件,内容分别如下:

e:\setip1bat文件内容:

rem  设置IP、子网掩码、默认网关

c:

cd \

netsh exec  e:\setipbat

另一个文件e:\setipbat文件内容:

interface

ip

set address "本地连接" static 1921681111  2552552550 19216811

exit

2,执行脚本命令的JAVA程序

java获取本机的外网ip示例:

import javaioIOException;

import javaioInputStream;

import javanet>

有两种方法:

1对方访问你的主机上的java web项目,通过requestgetRemoteAddr();

2通过命令返回的结果

===============================

COLOR 0A

CLS

@ECHO Off

Title 查询局域网内在线电脑IP

:send

@ECHO off&setlocal enabledelayedexpansion

ECHO 正在获取本机的IP地址,请稍等

for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do (

set "IP=%%i"

set IP=!IP:~1,-1!

ECHO 本机IP为:!IP!

goto :next

)

:next

for /f "delims= tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i%%j%%k

ECHO&ECHO 正在获取本网段内的其它在线计算机名,请稍等

ECHO 本网段%range%内的计算机有:

for /f "delims=" %%i in ('net view') do (

set "var=%%i"

::查询在线计算机名称

if "!var:~0,2!"=="\\" (

set "var=!var:~2!"

ECHO !var!

ping -n 1 !var!>nul

))

ECHO

ECHO 正在获取本网段内的其它在线计算机IP,请稍等

for /f "skip=3 tokens=1, delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用

ECHO

ECHO 查询完毕,按任意键退出

pause>nul

===============================

String cmd = "";

Runtime runtime = RuntimegetRuntime();

try {

Process process = runtimeexec(cmd);

InputStream in = processgetInputStream();

} catch (IOException e) {

eprintStackTrace();

}

通过java程序执行cmd命令截取返回结果可以得到所有的局域网类使用ip地址

剩下的自己组织我就不帮你了

Java判断IP是否在指定网段中,看代码/ 判断ip是否在指定网段中 @author dh @param iparea @param ip @return boolean / public static boolean ipIsInNet(String iparea, String ip) { if (iparea == null) throw new NullPointerException("IP段不能为空!"); if (ip == null) throw new NullPointerException("IP不能为空!"); iparea = ipareatrim(); ip = iptrim(); final String REGX_IP = "((25[0-5]|2[0-4]//d|1//d{2}|[1-9]//d|//d)//){3}(25[0-5]|2[0-4]//d|1//d{2}|[1-9]//d|//d)"; final String REGX_IPB = REGX_IP + "//-" + REGX_IP; if (!ipareamatches(REGX_IPB) || !ipmatches(REGX_IP)) return false; int idx = ipareaindexOf('-'); String[] sips = ipareasubstring(0, idx)split("//"); String[] sipe = ipareasubstring(idx + 1)split("//"); String[] sipt = ipsplit("//"); long ips = 0L, ipe = 0L, ipt = 0L; for (int i = 0; i < 4; ++i) { ips = ips << 8 | IntegerparseInt(sips[i]); ipe = ipe << 8 | IntegerparseInt(sipe[i]); ipt = ipt << 8 | IntegerparseInt(sipt[i]); } if (ips > ipe) { long t = ips; ips = ipe; ipe = t; } return ips <= ipt && ipt <= ipe; } OK,祝君好运!

代码就不帮你写了,给你个伪代码作为思路

1、ip1和ip2都用split方法获得4元素数组

2、分别定义ip1address1、ip1address2、ip1address3、ip1address4和ip2的对应名称的变量,存储192、168、1、1等数值

3、四段for循环,针对ip1address1、ip1address2、ip1address3、ip1address4嵌套

for(i1从ip1address1到ip2address1)

for(i2从ip1address2到255)但这里要判断如果ip1address1==ip2address1,则不是到255,而是到ip2address2

for第三段,类似第二段

for第四段,类似二三段

String s = i1 + "" + i2 + "" + i3 + "" + i4;

以上就是关于java如何实现对本机的ip地址 网关地址 子网全部的内容,包括:java如何实现对本机的ip地址 网关地址 子网、Java怎样获取当前机器外网IP、两台电脑用一根网线相连,怎么用java语言获取另一台电脑的IP地址和端口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9647445.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存