protected virtual BacnetAddress _GetBroadcastAddress()
{
// general broadcast
System.Net.IPEndPoint ep = new Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), m_port);
// restricted local broadcast (directed ... routable)
foreach (System.Net.NetworkInformation.NetworkInterface adapter in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces())
foreach (System.Net.NetworkInformation.UnicastIPAddressInformation ip in adapter.GetIPProperties().UnicastAddresses)
if (LocalEndPoint.Address.Equals(ip.Address))
{
try
{
string[] strCurrentIP = ip.Address.ToString().Split('.');
string[] strIPNetMask = ip.IPv4Mask.ToString().Split('.');
StringBuilder BroadcastStr = new StringBuilder();
for (int i = 0; i < 4; i++)
{
BroadcastStr.Append(((byte)(int.Parse(strCurrentIP[i]) | ~int.Parse(strIPNetMask[i]))).ToString());
if (i != 3) BroadcastStr.Append('.');
}
ep = new Net.IPEndPoint(System.Net.IPAddress.Parse(BroadcastStr.ToString()), m_port);
}
catch { } //On mono IPv4Mask feature not implemented
}
BacnetAddress broadcast;
Convert(ep, out broadcast);
broadcast.net = 0xFFFF;
return broadcast;
}