GetAllNetworkInterfaces메서드
- 현재 네트워크 인터페이스의 구성을 설명하는 개체를 반환합니다.
- 참조 : https://docs.microsoft.com/ko-kr/dotnet/api/system.net.networkinformation.networkinterface.getallnetworkinterfaces?view=net-5.0
// Get Adapter list
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
var i = 0;
Console.WriteLine($"Select Disconnenct Adapter.");
foreach (NetworkInterface adapter in adapters)
{
var properties = adapter.GetIPv4Statistics();
Console.WriteLine($"Adapter ID : {adapter.Id}"); // Adapter ID
Console.WriteLine($"Adapter Name : {adapter.Name}"); // Adapter Name
Console.WriteLine($"Adapter Type : {adapter.NetworkInterfaceType}"); // Adapter 종류
Console.WriteLine($"Adapter Status : {adapter.OperationalStatus}"); // Adapter 연결 상태
Console.WriteLine($"============================");
}
Adapter선택하여 Network 연결/ 연결 끊기
- 아래 예제로 Adapter를 연결, 연결 끊기를 할 수 있습니다.
- 아래 메서드는 AdapterName을 파라미터로 활용합니다.
Network 연결
static void EnableEthernet(string adapterName)
{
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo("netsh", "interface set interface \"" + adapterName + "\" enable");
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = psi;
p.Start();
}
Network 연결 끊기
static void DisableEthernet(string adapterName)
{
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo("netsh", "interface set interface \"" + adapterName + "\" disable");
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = psi;
p.Start();
}
테스트를 위한 샘플코드
- 샘플코드 동작 순서
- 선택한 Adapter의 연결 해제합니다.
- 일정 시간 뒤에 선택한 Adapter의 재 연결 합니다.
static void Main(string[] args)
{
// Get Adapter list
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
var i = 0;
Console.WriteLine($"Select Disconnenct Adapter.");
foreach (NetworkInterface adapter in adapters)
{
var properties = adapter.GetIPv4Statistics();
Console.WriteLine($"No. {i++} ");
Console.WriteLine($"Adapter ID : {adapter.Id}"); // Adapter ID
Console.WriteLine($"Adapter Name : {adapter.Name}"); // Adapter Name
Console.WriteLine($"Adapter Type : {adapter.NetworkInterfaceType}"); // Adapter 종류
Console.WriteLine($"Adapter Status : {adapter.OperationalStatus}"); // Adapter 연결 상태
Console.WriteLine($"============================");
}
int selectAdapter = int.Parse(Console.ReadLine());
Console.WriteLine($"Enter Elapse time (seconds) up on 5s: "); // Delay시킬 Time을 최소 5초로 입력하도록 권장
var delayTime = int.Parse(Console.ReadLine());
if (delayTime < 5)
{
delayTime = 5;
Console.WriteLine($"\nElapse Time : {delayTime}s");
}
DisableEthernet(adapters[selectAdapter].Name); // 선택한 네트워크 연결 끊기
Thread.Sleep(delayTime * 1000); // DelayTime
EnableEthernet(adapters[selectAdapter].Name); // 선택한 네트워크 재 연결
}
static void EnableEthernet(string adapterName)
{
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo("netsh", "interface set interface \"" + adapterName + "\" enable");
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = psi;
p.Start();
}
static void DisableEthernet(string adapterName)
{
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo("netsh", "interface set interface \"" + adapterName + "\" disable");
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = psi;
p.Start();
}
'프로그래밍 > C#' 카테고리의 다른 글
[C#] Linq - Enumerable.Aggregate (0) | 2021.10.23 |
---|---|
[C#] 확장 메서드 (Extension Method) (0) | 2021.10.19 |
[C#] 대리자 (delegate) (0) | 2021.09.26 |
[C#] 리플렉션 (Reflection) (0) | 2021.09.12 |
[C#] DateTime.Ticks 속성 변환하기 (0) | 2021.07.29 |