InetAddress类

用于表示 Internet 协议(IP)地址的类。它在 java.net 包中定义,并提供了一些方法来处理IP地址和主机名

static InetAddress getByAddress()
返回给定ip地址/主机名的InetAddress对象
//example
InetAddress address = InetAddress.getByName("MXY520");

String getHostName()
获取此 IP 地址的主机名

String getHostAddress()
以文本形式返回 IP 地址字符串
//example
        System.out.println("主机名:" + address.getHostName());
        System.out.println("IP:" + address.getHostAddress());

UDP通信程序

UDP发送数据:

1.创建 DatagramSocket

DatagramSocket ds = new DatagramSocket();//随便用一个可用端口发送消息

2.使用 DatagramPacket 发送出去

DatagramPacket dp = new DatagramPacket(bytes, bytes.length, ipAddress, port);
ds.send(dp);

UDP接收消息

1.创建 DatagramSocket 类并指定接收端口

DatagramSocket ds = new DatagramSocket(port);

2.使用 DatagramPacket 包装数据(接送数据 DatagramPacket 只要传入字节数组和数组长度就ok)

DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
System.out.println(new String(bytes, 0, dp.getLength(), "UTF-8"));

UDP组播

1.发送方:
发送方需要把消息发送到组播ip上 其他操作和单播一样

InetAddress ip = InetAddress.getByName("224.0.1.0");//组播地址

2.接收方
接收方需要创建 MulticastSocket 取代DatagramSocket
MulticastSocket 对象还需要在DatagramPacket对象创建后, 接收消息前加入到组播地址

MulticastSocket mcs = new MulticastSocket(10000);
mcs.joinGroup(InetAddress.getByName("224.0.1.0"));

MulticastSocket对象可以绑定同一个端口

UDP广播

只需要发送端的DatagramPacket对象绑定广播地址 255.255.255.255 就好了, 接收端和单播一样

InetAddress ip = InetAddress.getByName("255.255.255.255");
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, ip, port);