Windows环境下Java Multicast Socket无法接收消息(附发送端代码)
嘿,我帮你把这段多播发送代码整理规范,还补全了没写完的部分,直接就能用:
Java多播消息发送端完整实现
这是一个向指定多播组循环发送时间消息的Java程序,我补全了你代码里缺失的发送逻辑,还完善了异常处理和资源回收流程:
import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; import java.util.Date; public class MulticastSender { public static void main(String[] args) { MulticastSocket socket = null; try { // 创建MulticastSocket并绑定到端口3575 socket = new MulticastSocket(3575); int n = 1; // 循环发送100条消息 while (n <= 100) { // 将当前时间转为字节数组 String timeStr = new Date().toString(); byte[] buf = timeStr.getBytes(); // 指定多播组地址 InetAddress group = InetAddress.getByName("230.0.0.1"); // 封装多播数据包:消息内容、长度、目标组、端口 DatagramPacket packet = new DatagramPacket(buf, buf.length, group, 3575); // 发送数据包 socket.send(packet); System.out.println("已发送第" + n + "条消息: " + timeStr); n++; // 可选:每1秒发送一次,避免消息太密集 Thread.sleep(1000); } } catch (Exception e) { e.printStackTrace(); } finally { // 确保socket资源关闭 if (socket != null) { socket.close(); } } } }
关键细节说明:
- 多播地址
230.0.0.1属于预留的本地多播地址范围(230.0.0.0-230.255.255.255),适合局域网内的多播通信 MulticastSocket是Java专门用于多播的Socket实现,区别于普通的DatagramSocket- 加入
Thread.sleep(1000)是为了让发送间隔更合理,你可以根据需求调整或移除 - 用
finally块确保Socket无论是否出现异常都会被关闭,避免资源泄漏
内容的提问来源于stack exchange,提问作者Fabio Mancuso
相关产品推荐
相关产品推荐

