using System.Net; using System.Net.NetworkInformation; namespace NWService { public class Program { public static void Main() { try { LanguageXml language = LanguageXmlLoader.Load(); ServiceMode mode = OptionConsole.GetServiceMode(language); List localIPv4 = NetworkService.GetLocalIPv4().ToList(); IPAddress targetIPv4 = OptionConsole.GetIPAddress(localIPv4, language); switch(mode) { case ServiceMode.SEARCH_ARP: Search_ARP(targetIPv4, language); break; case ServiceMode.SEARCH_PING: Search_Ping(targetIPv4, language); break; default: Console.WriteLine("unknown mode..."); break; } } catch(Exception error) { Console.WriteLine(error.Message); } } public static void Search_ARP(IPAddress targetIPv4, LanguageXml language) { try { List findList = new List(); Task task = Task.Run(() => { findList.AddRange(NetworkService.SearchARP(targetIPv4)); Thread.Sleep(10); }); string[] frames = {"\","|","/"}; int frameCount = 0; (int cpL, int cpT) = Console.GetCursorPosition(); while (!task.IsCompleted) { Console.SetCursorPosition(cpL, cpT); frameCount++; int targetFrameNumber = frameCount%frames.Length; Console.WriteLine("{0} {1}", frames[targetFrameNumber], language.GetMessage("searching", "searching...")); Thread.Sleep(100); } Console.SetCursorPosition(cpL, cpT); Console.WriteLine(" "); if (findList.Count() == 0) { Console.WriteLine("{0}", language.GetMessage("empty_find_list", "Not found...")); } else { Console.WriteLine(string.Format(language.GetMessage("found_devices","Found {0} Devices."), findList.Count())); foreach (DeviceInfo deviceInfo in findList) { Console.WriteLine("――――――――――――――――――――――――――――"); Console.WriteLine("IP: {0}", deviceInfo.GetIPAddress().ToString()); Console.WriteLine("Mac: {0}", deviceInfo.GetMacAddress()); } } } catch(Exception e) { Console.WriteLine(e); } } public static void Search_Ping(IPAddress targetIPv4, LanguageXml language) { try { List findList = new List(); Task task = Task.Run(() => { findList.AddRange(NetworkService.SearchByPing(targetIPv4)); Thread.Sleep(10); }); string[] frames = {"\","|","/"}; int frameCount = 0; (int cpL, int cpT) = Console.GetCursorPosition(); while (!task.IsCompleted) { Console.SetCursorPosition(cpL, cpT); frameCount++; int targetFrameNumber = frameCount%frames.Length; Console.WriteLine("{0} {1}", frames[targetFrameNumber], language.GetMessage("searching", "searching...")); Thread.Sleep(100); } Console.SetCursorPosition(cpL, cpT); Console.WriteLine(" "); if (findList.Count() == 0) { Console.WriteLine("{0}", language.GetMessage("empty_find_list", "Not found...")); } else { Console.WriteLine(string.Format(language.GetMessage("found_devices","Found {0} Devices."), findList.Count())); foreach (var reply in findList) { Console.WriteLine("――――――――――――――――――――――――――――"); Console.WriteLine("IP: {0}", reply.Address.ToString()); Console.WriteLine("Time: {0}ms", reply.RoundtripTime); Console.WriteLine("Status: {0}", reply.Status); Console.WriteLine("Ttl: {0}", reply.Options.Ttl); } } } catch(Exception e) { Console.WriteLine(e); } } } }