
提供一种可行的方法。供你参考。思路是利用 *** 作系统的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地址和端口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)