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);