Gateway IP from Machine IP
21:39Introduction
In this article I show how to get Gateway IP from Machine IPCreate Simple Application
Go to Visual Studio > File > New > Project > Windows > Console ApplicationCreate a class name Route.cs and replace by below class.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GetGatewayIPFromMachineIP { public class Route { private uint _address; private uint _mask; private string _gateway; private uint _interface; private int _metric; public uint Address { get { return this._address; } } public uint Mask { get { return this._mask; } } public uint Interface { get { return this._interface; } } public string ReadableAddress { get { return Route.IPLongToString(this._address); } } public string ReadableMask { get { return Route.IPLongToString(this._mask); } } public string ReadableInterface { get { return Route.IPLongToString(this._interface); } } public string Gateway { get { return (this._gateway); } } public Route(string[] route) { this._address = IPStringToLong(route[0]); this._mask = IPStringToLong(route[1]); this._gateway = route[2].ToString(); this._interface = IPStringToLong(route[3]); this._metric = UInt16.Parse(route[4]); } public Route(string line) : this(line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) { } public static uint IPStringToLong(string str) { string[] values = str.Split(new char[] { '.' }); uint multiplier = 1; uint value = 0; for (int i = 3; i >= 0; i--) { value += UInt32.Parse(values[i]) * multiplier; multiplier *= 256; } return value; } public static string IPLongToString(uint addr) { byte[] bytes = BitConverter.GetBytes(addr); string[] bs = new string[] { "", "", "", "" }; for (int i = 0; i < 4; i++) { bs[i] = bytes[3 - i].ToString(); } return String.Join(".", bs); } } }Now replace the Program.cs code by below code:
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace GetGatewayIPFromMachineIP { class Program { static void Main(string[] args) { try { Console.WriteLine("Please enter machine IP:"); var IP = Console.ReadLine(); var GatewayIP = getGatewayIP(IP); Console.WriteLine("Your Machine IP: " + IP); Console.WriteLine("Your Gateway IP: " + GatewayIP); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } public static string getGatewayIP(string IP) { Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.CreateNoWindow = false; p.StartInfo.FileName = "route"; p.StartInfo.Arguments = "PRINT " + IP; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); p.Close(); p.Dispose(); string[] lines = output.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); List<Route> routes = new List<Route>(); bool found = false; foreach (string line in lines) { if (line == "Active Routes:") { if (found) break; found = true; continue; } if (found) { if (line[0] == 'N') continue; else if (line[0] == '=') break; routes.Add(new Route(line)); } } routes.Sort(); return routes[0].Gateway.ToString(); } } }Run the application and we can see the below screen:
0 comments