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);
|
||
}
|
||
}
|
||
}
|
||
} |