135 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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<IPAddress> 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<DeviceInfo> findList = new List<DeviceInfo>();
 | ||
|                 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<PingReply> findList = new List<PingReply>();
 | ||
|                 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);
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| } |