public void BroadcastTo(byte[] buffer, int offset, int count, NetworkInfo network) { if (network.LocalIP.AddressFamily == AddressFamily.InterNetwork) { IPAddress broadcastIP = network.BroadcastIP; if (_udpListener.AddressFamily == AddressFamily.InterNetworkV6) { broadcastIP = NetUtilities.ConvertToIPv4MappedIPv6Address(broadcastIP); } try { _udpListener.SendTo(buffer, offset, count, SocketFlags.None, new IPEndPoint(broadcastIP, _listenerPort)); } catch (Exception ex) { Debug.Write("LocalPeerDiscovery.Listener.BroadcastTo", ex); } } else { try { _udpListener.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.MulticastInterface, network.Interface.GetIPProperties().GetIPv6Properties().Index); _udpListener.SendTo(buffer, offset, count, SocketFlags.None, new IPEndPoint(IPAddress.Parse(IPV6_MULTICAST_IP), _listenerPort)); } catch (Exception ex) { Debug.Write("LocalPeerDiscovery.Listener.BroadcastTo", ex); } } }
public void SendTo(byte[] buffer, int offset, int count, IPAddress remoteIP) { if ((_udpListener.AddressFamily == AddressFamily.InterNetworkV6) && (remoteIP.AddressFamily == AddressFamily.InterNetwork)) { remoteIP = NetUtilities.ConvertToIPv4MappedIPv6Address(remoteIP); } try { _udpListener.SendTo(buffer, offset, count, SocketFlags.None, new IPEndPoint(remoteIP, _listenerPort)); } catch (Exception ex) { Debug.Write("LocalPeerDiscovery.Listener.SendTo", ex); } }