c#-脱机时未发送多播数据包

c#-脱机时未发送多播数据包,c#,sockets,networking,network-programming,C#,Sockets,Networking,Network Programming,大家好 我正在为离线LAN使用测试这段代码,但如果发送方离线,则不会发送多播数据包(我的结论我对此表示怀疑) 为了发现数据包,我使用 钢丝鲨 带着 “QUIC”协议过滤器 问题: 当我在线时(不管是哪种连接,只要我可以访问互联网),我的多播数据包就会被发送 但是,当我断开与internet的连接时,没有数据包被发送,当我连接到internet时,数据包被发送 因此, 互联网连接->发送数据包 没有internet连接->没有发送数据包 已更新 p、 此代码应通过所有接口发送多播数据包 及 值

大家好

我正在为离线LAN使用测试这段代码,但如果发送方离线,则不会发送多播数据包(我的结论我对此表示怀疑)

为了发现数据包,我使用

钢丝鲨

带着

“QUIC”协议过滤器

问题:

当我在线时(不管是哪种连接,只要我可以访问互联网),我的多播数据包就会被发送

但是,当我断开与internet的连接时,没有数据包被发送,当我连接到internet时,数据包被发送

因此,

  • 互联网连接->发送数据包
  • 没有internet连接->没有发送数据包
已更新

p、 此代码应通过所有接口发送多播数据包


值得一提的是,系统重启似乎解决了这个问题

我一开始不知道是什么原因造成的

如果出现此问题,请尝试重置适配器,否则重新启动并报告


希望这能有所帮助。

无论如何,系统重启似乎可以解决这个问题

我一开始不知道是什么原因造成的

如果出现此问题,请尝试重置适配器,否则重新启动并报告

希望这有帮助

IPAddress_MultiIP = IPAddress.Parse("224.0.0.3");
   Socket _listener_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            foreach (IPAddress localIP in Dns.GetHostAddresses(Dns.GetHostName()).Where(i => i.AddressFamily == AddressFamily.InterNetwork))
            {
                //handle image and files                
                _listener_socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(_MultiIP/*, localIP*/));
                _listener_socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 1);
                _listener_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                _listener_socket.MulticastLoopback = true;
                _listener_socket.Connect(new IPEndPoint(_MultiIP, _PORT));
                //send data to multicast group
                string message_to_send = _IPADDRESS.ToString() + "~m~" + _MESSAGE + "\n";
                byte[] bytes = new byte[message_to_send.Length * sizeof(char)];
                System.Buffer.BlockCopy(message_to_send.ToCharArray(), 0, bytes, 0, bytes.Length);
                _listener_socket.Send(bytes, bytes.Length, SocketFlags.None);
            }
            _listener_socket.Close();