Java中有一个类叫 Application,可以用来获取本机 ip,也可以用来获取网络连接的信息,例如网络上有什么主机、需要访问本机的主机名等。但是这个类只能在本机上使用,如果要访问外部的主机,还需要使用其它的方法。 首先在主程序中写一个 java. util. Application ()方法,然后在子类中定义一个 Application类,如图1所示。 通过这个类可以获取到本机 ip地址。当然,这个类不是只能在本机上使用,其他地方也可以使用。 2.在子类中定义一个 Application方法(方法名根据需要自己取)。 4.用上述方法获得本机 ip地址(方法名和子类都是自定义的)。 5.调用 application方法来获取本机 ip地址。 6.如果在 Java程序中使用了 Debug模式,那么在这一步可以用 Debug模式来获取本机 ip地址。但是如果采用的是动态 IP,那么就要用动态 IP协议来获取本机 ip地址。
-
一、获取动态 IP
动态 IP是指路由器根据一定的规则,动态分配 IP地址,当主机从一个路由器转发数据时,路由器将这个 IP地址保存在自己的内存中,并在下一个周期根据该 IP地址计算出下一个周期的 IP地址。在动态 IP中,主机的 ip地址不固定。也就是说,在一次连接成功后,这个 ip地址是不会改变的。需要获取的是主机当前的动态 IP地址,即“本地动态 IP地址”。 Java中采用的动态 IP协议是 TCP/IP协议中的IPv4协议。IPv4协议与 Internet没有直接关系,其主要目标是在因特网上提供虚拟专用网服务。而 TCP/IP协议则是用于因特网上通信的三大基本协议之一。TCP/IP是建立在 TCP/IP之上的一整套规范,它规定了在因特网上进行通信时应遵循的一些规则(包括数据报格式、网络层传输格式、报头结构等)和接口规范。
-
二、网络协议
IP地址是一组数字,表示网络上的主机所处的位置。为了能让网络上所有的主机都能使用 IP地址,就需要一个协议。这个协议叫 IP协议,也叫网络协议。 在 TCP/IP协议中有三种不同的方式来表示网络中的主机地址。 第一种方式是用网络号来表示,第二种方式是用 IP地址来表示,第三种方式是用端口号来表示。因此,在 TCP/IP协议中,也是使用 IP地址和端口号来表示的。这里使用的是第三种方式。 要了解 IP地址和端口号之间的关系,可以看一下下面这个图: 根据图3所示,可以看到两个端口之间的连接情况。如果两个端口之间只有一条数据线,那么就是1;如果有两条数据线,那么就是2;如果有三条数据线,那么就是3。 对于三个端口之间的连接情况,我们可以用下面这个图来表示: 如图4所示,可以看出三个端口之间都有一条数据线。而这条数据线对应着相应的网络协议。
-
三、基本配置
首先打开 cmd命令窗口,在命令窗口中输入 cmd,回车。 2.在命令窗口中输入 ipconfig,回车。
-
四、本地配置
在 Java程序中用 Application方法获取本机 ip地址时,并不是直接调用本机的 application方法,而是使用一个 java. util. Application ()方法。如果有多个本地连接,那么可以使用多个 application方法。 2.在本地配置中,使用本机的 ip地址、端口、网段等信息。例如,在本机上的 ip地址为192.168.1.0,端口为80,那么需要将地址和端口分别设置为192.168.1.1和80。 3.使用 Debug模式来获取本机 ip地址时,只要设置了上述信息就可以了。 4.如果要获取的是动态 IP地址,那么需要将以上所有步骤都设置成自动。
-
五、安全配置
首先需要在 Java中对上述类库进行安全配置。方法是在类的 static成员方法中添加一个名为 test的安全参数,如图2所示。如果将 Test类加入到类库中,那么在程序运行时就会自动检测 test类是否为静态类。如果是静态类,就不能在程序运行时检测 test类,也就不能获取本机的 ip地址。 2.然后将 Test类添加到类库中,如图3所示。 4.将获取到的本机 ip地址和 test类绑定,如果需要访问外部的主机,那么需要使用动态 IP协议来访问,如果采用静态 IP协议,就可以获取到外部主机的 IP地址。 5.将获取到的本机 ip地址和 test类绑定,这样就可以使用 test类来访问外部主机了。
-
六、网络配置
进入网络配置界面,在“本地连接”窗口中,输入“连接到 Internet”并按回车键,即可启动 Internet。 2.进入 Internet,在“常规”选项卡中,选择“属性”。 3.点击“网络”,如图3所示,在弹出的对话框中输入“IP地址”并按回车键,然后再点击“属性”。如图5所示。 5.此时进入网络设置界面,在 IP地址前面添加子网掩码和网关即可完成网络配置。 6.到此完成了对本机 ip地址的获取。
-
七、运行环境
在上述配置环境变量的基础上,如果使用了网络适配器(Network Adapter),那么还需要配置网络适配器的相关变量。
以下是几种获取本机IP地址的Java代码:
使用InetAddress类
```java
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetLocalIP {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("本机IP地址:" + localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
```
2. 使用NetworkInterface类
```java
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetLocalIP {
public static void main(String[] args) {
try {
Enumeration
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (!inetAddress.isLinkLocalAddress() && !inetAddress.isLoopbackAddress() && inetAddress.isSiteLocalAddress()) {
System.out.println("本机IP地址:" + inetAddress.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
```
3. 使用System类
```java
public class GetLocalIP {
public static void main(String[] args) {
String localIP = null;
try {
localIP = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
System.out.println("本机IP地址:" + localIP);
}
}
```
来源地址:https://blog.csdn.net/qq_42751978/article/details/130167416