aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-04-10 11:06:54 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-04-10 11:06:54 -0400
commit3094868a83937d2f5c49b06abd53757ef304a7e2 (patch)
treeed66b10daad8362000ea358e6d6f8f033d190a2b /MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
parentf657e2981cb928720eb728790697c0653cb7344f (diff)
beginning dlna server
Diffstat (limited to 'MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs')
-rw-r--r--MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs41
1 files changed, 40 insertions, 1 deletions
diff --git a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
index ac6b9290e..e15c32518 100644
--- a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
+++ b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
@@ -16,6 +16,44 @@ namespace MediaBrowser.Common.Implementations.Networking
/// <returns>IPAddress.</returns>
public IEnumerable<string> GetLocalIpAddresses()
{
+ var list = GetIPsDefault().Where(i => !IPAddress.IsLoopback(i)).Select(i => i.ToString()).ToList();
+
+ if (list.Count > 0)
+ {
+ return list;
+ }
+
+ return GetLocalIpAddressesFallback();
+ }
+
+ private IEnumerable<IPAddress> GetIPsDefault()
+ {
+ foreach (var adapter in NetworkInterface.GetAllNetworkInterfaces())
+ {
+ var props = adapter.GetIPProperties();
+ var gateways = from ga in props.GatewayAddresses
+ where !ga.Address.Equals(IPAddress.Any)
+ select true;
+
+ if (!gateways.Any())
+ {
+ continue;
+ }
+
+ foreach (var uni in props.UnicastAddresses)
+ {
+ var address = uni.Address;
+ if (address.AddressFamily != AddressFamily.InterNetwork)
+ {
+ continue;
+ }
+ yield return address;
+ }
+ }
+ }
+
+ private IEnumerable<string> GetLocalIpAddressesFallback()
+ {
var host = Dns.GetHostEntry(Dns.GetHostName());
// Reverse them because the last one is usually the correct one
@@ -25,7 +63,7 @@ namespace MediaBrowser.Common.Implementations.Networking
.Select(i => i.ToString())
.Reverse();
}
-
+
/// <summary>
/// Gets a random port number that is currently available
/// </summary>
@@ -50,6 +88,7 @@ namespace MediaBrowser.Common.Implementations.Networking
.Select(i => BitConverter.ToString(i.GetPhysicalAddress().GetAddressBytes()))
.FirstOrDefault();
}
+
/// <summary>
/// Parses the specified endpointstring.
/// </summary>