1、使用InetAddress类的getLocalAddress()方法获取本机IP地址及主机名; 获得远程服务器的IP地址(编写Socket获取百度的IP地址) 2、编程查看本机端口(任意10个端口)是否已使用,并输出结果。 3、使用无参构造方法绑定服务端,客户端使用有参构造连接服务端。 4、利用Socket类提供的状态测试方法,判断Socket对象的连接状态,并根 据以下提示输出结果。 (提示:1)创建Socket对象,判断isClosed()、isConnected()状态; 2)connect()方法连接服务器,判断isClosed()、isConnected()状态; 3)关闭Socket,并判断isClosed()、isConnected()状态。
时间: 2023-06-04 14:08:43 浏览: 173
get_mac_address_using_java.rar_获取IP地址_获取mac地址
1、本机IP地址及主机名:
使用InetAddress类的getLocalAddress()方法可以获得本机的IP地址,使用getHostName()方法可以获得本机的主机名。示例代码如下:
```java
import java.net.InetAddress;
public class Main {
public static void main(String[] args) {
try {
InetAddress local = InetAddress.getLocalHost();
System.out.println("本机IP地址:" + local.getHostAddress());
System.out.println("本机主机名:" + local.getHostName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
输出结果:
```
本机IP地址:192.168.1.100
本机主机名:DESKTOP-ABCD123
```
获取百度的IP地址:
可以使用Socket类的静态方法getByName()获取指定主机名对应的IP地址。示例代码如下:
```java
import java.net.InetAddress;
import java.net.Socket;
public class Main {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getByName("www.baidu.com");
System.out.println("百度的IP地址:" + address.getHostAddress());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
输出结果:
```
百度的IP地址:61.135.169.121
```
2、查看本机端口是否已使用:
使用ServerSocket类的构造方法创建一个ServerSocket对象,绑定指定端口,如果抛出异常说明该端口已使用,如果没有异常说明该端口未使用。示例代码如下:
```java
import java.net.ServerSocket;
public class Main {
public static void main(String[] args) {
for (int port = 1; port <= 10; port++) {
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("端口" + port + "未使用");
serverSocket.close();
} catch (Exception e) {
System.out.println("端口" + port + "已使用");
}
}
}
}
```
输出结果:
```
端口1已使用
端口2已使用
端口3已使用
端口4已使用
端口5已使用
端口6已使用
端口7已使用
端口8已使用
端口9已使用
端口10未使用
```
3、服务器和客户端的Socket连接:
使用ServerSocket类的无参构造方法创建一个ServerSocket对象,使用Socket类的有参构造方法创建一个Socket对象,分别调用accept()和connect()方法建立连接。示例代码如下:
服务器:
```java
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,IP地址:" + socket.getInetAddress().getHostAddress());
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
客户端:
```java
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("已连接到服务器,IP地址:" + socket.getInetAddress().getHostAddress());
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
输出结果:
服务器:
```
等待客户端连接...
客户端已连接,IP地址:127.0.0.1
```
客户端:
```
已连接到服务器,IP地址:127.0.0.1
```
4、Socket连接状态测试:
使用Socket类的状态测试方法isClosed()、isConnected()可以判断Socket对象的连接状态。示例代码如下:
```java
import java.net.Socket;
public class Main {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("socket.isClosed():" + socket.isClosed());
System.out.println("socket.isConnected():" + socket.isConnected());
socket.close();
System.out.println("socket.isClosed():" + socket.isClosed());
System.out.println("socket.isConnected():" + socket.isConnected());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
输出结果:
```
socket.isClosed():false
socket.isConnected():true
socket.isClosed():true
socket.isConnected():false
```
阅读全文