Network information is a complex subject at the best of times and simplifying it for the average user is no simple feat. Even harder it seems is actually writing code to get this information programatically! I was quite disappointed to find that there was no simple way to get an IP address via code – mainly since Windows does not actually know it until a request is made. I eventually made a work around and used a web script to scrape the information. It saved a lot of time and effort in the end.
Getting the internal IP address was also quite interesting. It involved using some built-in .NET code. The only issue is that there were nearly always IPv6 addresses returned first. Since these are not well known (yet) I decided to list only the IPv4 address instead. The code I came up with is listed below – hopefully it will help someone else.
IPHostEntry localIPAddresses = Dns.GetHostEntry(Dns.GetHostName());
string localIP = (from ip in localIPAddresses.AddressList where (ip.AddressFamily == AddressFamily.InterNetwork) select ip).First().ToString();
As you can see I also use LINQ there instead of a foreach loop since I find it much more readable. I am nearly finished with the main basic info page now so pretty soon I will have some new screen shots to demonstrate the new design of CSIT!