You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:17:18