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

C# Socket无法接收组播消息问题求助

C# Socket无法接收组播消息问题求助

大家好,我碰到一个特别费解的问题,想请各位大佬帮忙分析下。我写了一段C#脚本,功能是向组播地址发送查询请求,然后监听指定端口接收设备的回复。这段脚本在我自己的私人笔记本上运行完全正常,但换到工作笔记本上就彻底失效了——根本收不到任何设备的回复。

先跟大家说下背景:这个脚本是用来查找局域网内特定设备的,设备厂商官方的查找工具在我的工作笔记本上能正常搜到设备、收到回复,可我的脚本就是不行,我实在搞不懂哪里出了问题。

我已经做了这些排查:

  • 检查了系统的IP规则,目标端口(5353)的入站规则是存在的,为了保险起见我还手动新增了一条允许规则;
  • 用Wireshark抓包能明确看到设备已经对我的查询做出了回复,我的工作本IP是192.168.0.2,回复的设备IP是192.168.0.3,用的是mDNS协议。

下面是我的脚本代码:

IPAddress ip = IPAddress.Parse("224.0.0.251");

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any));// Add socket to the multicast group

IPEndPoint listener = new IPEndPoint(IPAddress.Parse(localIP), 5353);

IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);

EndPoint senderRemote = (EndPoint)sender;

socket.Bind(listener);

Console.WriteLine("server started listening\n");

// Receive messages
while (_running)
{
    byte[] data = new byte[3024];
    socket.ReceiveFrom(data, ref senderRemote);
    string str = System.Text.Encoding.ASCII.GetString(data);
    // Console.WriteLine(str);
    cameraIP = senderRemote.ToString();
    Console.WriteLine(cameraIP);
    // Console.WriteLine(senderRemote.ToString());
}

Wireshark里能清楚看到设备发过来的消息,但我的脚本就是接收不到,实在不知道哪里出问题了,有没有大佬能给点思路?

备注:内容来源于stack exchange,提问作者bakeljouw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:57:33