美好的一天
我正在测试此代码以供离线局域网使用,但如果发件人处于离线状态,则不会发送多播数据包(我的结论是我怀疑的。)
为了发现数据包,我使用
的Wireshark
带
“QUIC”协议过滤器
问题:
当我在线时(无论哪个连接,只要我有互联网访问权限),我的多播数据包就会被发送,
但是,当我从互联网断开连接时,没有发送数据包,然后当我连接到互联网时,会发送数据包。
因此,
已更新
P.S。 - 此代码应通过所有接口发送多播数据包
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();
答案 0 :(得分:0)
对于它的价值,系统重启似乎解决了这个问题???
我不知道是什么原因导致了这一点。
如果您遇到此问题,请尝试重置适配器,否则重启并报告。
希望这有帮助