客户端:
public class FileMulticastClient {
public static void main(String[] args) throws Exception {
InetAddress groupAddress = InetAddress.getByName("239.0.0.1");//组播地址
try(MulticastSocket receiveSocket = new MulticastSocket(9999)) {
receiveSocket.joinGroup(groupAddress);//将创建的socket加入组播组
byte[] buffer = new byte[8192];//这里8192 已经是最大的了
//理论上UDP最大的负载是65535-20-8 但是因为性能以及一些原因 在网路编程中我们最大使用8192
while (true) {
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
receiveSocket.receive(packet);//阻塞等待组播
// Thread.sleep(1000);
String line = new String(packet.getData(), 0, packet.getLength());
System.out.println(line);//答应输出
}
}
}
}
服务端:
public class FileMulticastServer {
public static void main(String[] args) throws Exception {
InetAddress groupAddress = InetAddress.getByName("239.0.0.1");//组播地址
try(MulticastSocket sendSocket = new MulticastSocket(0);//0就是随机去取一个未使用的大端口
Scanner scanner = new Scanner(new File("FDSdata.txt"))) {//读文件
while(scanner.hasNextLine()) {
String line = scanner.nextLine();
byte[] buffer = line.getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length,
groupAddress, 9999);//Packet 发送到组播地址的包
sendSocket.send(packet);
}
}
}
}