LANCommander/LANCommander.SDK/Extensions/NetworkInterfaceExtensions.cs
Pat Hartl 041a0069ee Add DiscoveryBeacon, DiscoveryProbe, new beacon message
Adds a discovery beacon and probe to the client and removes BeaconService from the server.
2025-04-23 21:23:33 -05:00

33 lines
No EOL
1 KiB
C#

using System.Collections.Generic;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
namespace LANCommander.SDK.Extensions;
public static class NetworkInterfaceExtensions
{
public static IEnumerable<IPAddress> GetBroadcastAddresses(this NetworkInterface networkInterface)
{
foreach (var ua in networkInterface.GetIPProperties().UnicastAddresses)
{
if (ua.Address.AddressFamily == AddressFamily.InterNetwork)
{
var ip = ua.Address;
var mask = ua.IPv4Mask;
if (mask == null)
continue;
var ipBytes = ip.GetAddressBytes();
var maskBytes = mask.GetAddressBytes();
var broadcastBytes = new byte[4];
for (var i = 0; i < 4; i++)
broadcastBytes[i] = (byte)(ipBytes[i] | (maskBytes[i] ^ 255));
yield return new IPAddress(broadcastBytes);
}
}
}
}