ipconfig获取ip地址
InetAddress
public static InetAddress getLocalHost()
作用:获取本机网络信息对象public static InetAddress getByName(String host)
作用:获取指定的计算机的网络信息对象
参数:
也可填ip,也可以填设备名称,也可以填网址
public static InetAddress[] getAllByName(String host)
作用:获取指定的计算机的所有网络信息对象
参数:
也可填ip,也可以填设备名称,也可以填网址
public String getHostName()
作用:获取设备名称public String getHostAddress()
作用:获取ip地址
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressExample {
public static void main(String[] args) {
try {
// 获取本机网络信息对象
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("本机设备名称:" + localHost.getHostName());
System.out.println("本机IP地址:" + localHost.getHostAddress());
// 获取指定计算机的网络信息对象
String hostname = "www.example.com";
InetAddress inetAddress = InetAddress.getByName(hostname);
System.out.println(hostname + " 设备名称:" + inetAddress.getHostName());
System.out.println(hostname + " IP地址:" + inetAddress.getHostAddress());
// 获取指定计算机的所有网络信息对象
InetAddress[] allAddresses = InetAddress.getAllByName(hostname);
System.out.println(hostname + " 的所有IP地址:");
for (InetAddress address : allAddresses) {
System.out.println(address.getHostAddress());
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
//获取本地主机的 IP 地址:
InetAddress localHost = InetAddress.getLocalHost();
String ipAddress = localHost.getHostAddress();
System.out.println("本地主机的 IP 地址:" + ipAddress);
//通过主机名获取 IP 地址:
String hostname = "www.example.com";
InetAddress inetAddress = InetAddress.getByName(hostname);
String ipAddress = inetAddress.getHostAddress();
System.out.println(hostname + " 的 IP 地址是:" + ipAddress);
//通过 IP 地址获取主机名:
String ipAddress = "192.168.0.1";
InetAddress inetAddress = InetAddress.getByName(ipAddress);
String hostname = inetAddress.getHostName();
System.out.println(ipAddress + " 对应的主机名是:" + hostname);
//检查 IP 地址是否可达:
String ipAddress = "192.168.0.1";
InetAddress inetAddress = InetAddress.getByName(ipAddress);
boolean isReachable = inetAddress.isReachable(5000); // 设置超时时间为5000毫秒
if (isReachable) {
System.out.println(ipAddress + " 是可达的");
} else {
System.out.println(ipAddress + " 是不可达的");
}
TCP协议
面向有连接,安全的协议,3次握手,4次挥手,效率较低
UDP协议
面向无连接,不安全的协议,一次只能发送最多64kb的数据,有可能会丢失,效率高
IP
作用:计算机在互联网中的地址
IPV4:
4段,每段取值0~255
如:
10.35.181.12
IPV6
8段,每段取值0~65535
回环地址 : 127.0.0.1:本机 localhost:本机
Port:端口
作用:软件在计算机中的地址
取值范围:0~65535
其中:0~2048被系统占用
常见的端口:
80:http协议的端口
8080:Tomcat默认的端口号
3306:MySQL数据库默认端口号
Socket
TCP编程
服务器编程
步骤:
1,创建服务器端Socket
2,等待客户端连接
3,接收客户端消息或给客户端回馈消息
4,关闭资源
int serverPort = 8080;
try {
// 创建服务器套接字并监听指定端口
ServerSocket serverSocket = new ServerSocket(serverPort);
System.out.println("Server listening on port " + serverPort + "...");
// 等待客户端连接
Socket socket = serverSocket.accept();
System.out.println("Client connected: " + socket.getInetAddress().getHostAddress());
// 接收客户端发送的数据
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String message = new String(buffer, 0, length);
System.out.println("Received message from client: " + message);
// 向客户端发送响应数据
OutputStream outputStream = socket.getOutputStream();
String response = "Hello, client!";
outputStream.write(response.getBytes());
// 关闭连接
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
客户端编程
步骤:
1,创建客户端Socket
2,给服务器发送或结束服务器的消息
3,关闭资源
String serverIP = " ";
int serverPort = 8080;
try {
// 建立与服务器的连接
Socket socket = new Socket(serverIP, serverPort);
// 发送数据到服务器
OutputStream outputStream = socket.getOutputStream();
String message = "Hello, server!";
outputStream.write(message.getBytes());
// 接收来自服务器的响应
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String response = new String(buffer, 0, length);
System.out.println("Received response: " + response);
// 关闭连接
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
UDP编程
接收端
步骤
1,创建接收端Socket
2,创建数组准备接收数据
3,创建数据包接收数据
4,接收数据
5,获取接收到的数据与接收到的数据长度
6,关闭资源
int serverPort = 8080;
try {
// 创建UDP套接字并绑定到指定端口
DatagramSocket socket = new DatagramSocket(serverPort);
System.out.println("Receiver listening on port " + serverPort + "...");
// 创建接收数据的数据报
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
// 接收数据报
socket.receive(receivePacket);
String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("Received message: " + message);
// 关闭套接字
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
发送端
步骤
1,创建发送端Socket
2,准备发送的数据
3,接收端计算机信息
4,创建数据包
5,发送数据包
6,关闭资源
String serverIP = "192.168.0.1";
int serverPort = 8080;
try {
// 创建UDP套接字
DatagramSocket socket = new DatagramSocket();
// 准备要发送的数据
String message = "Hello, server!";
byte[] sendData = message.getBytes();
InetAddress serverAddress = InetAddress.getByName(serverIP);
// 创建数据报
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort);
// 发送数据报
socket.send(sendPacket);
System.out.println("Message sent to server.");
// 关闭套接字
socket.close();
} catch (IOException e) {
e.printStackTrace();
}