하아찡
C# Network 프로젝트 본문

Network프로젝트에는 현재 컴퓨터가 네트워크에 연결이 되어있는지를 체크해줌으로써 네트워크가 필요한 작업전에 확인해주는 역할.
Network.cs(전체코드)
using FileIO;
using System.Diagnostics;
using System.Net;
using System.Net.NetworkInformation;
namespace Network
{
public static class Network
{
public static bool Connected { get; private set; }
/// <summary>
/// 현재 인터넷 연결상태 확인
/// </summary>
public delegate void EventHandler(bool connect);
public static event EventHandler Connect;
static Network()
{
Connected = IsInternetConnected();
NetworkChange.NetworkAvailabilityChanged += (s, ne) =>
{
if (ne.IsAvailable)
{
Connected = true;
Connect(true);
}
else
{
Connected = false;
Connect(false);
}
};
}
public static bool IsInternetConnected()
{
const string NCSI_TEST_URL = "http://www.msftncsi.com/ncsi.txt";
const string NCSI_TEST_RESULT = "Microsoft NCSI";
const string NCSI_DNS = "dns.msftncsi.com";
const string NCSI_DNS_IP_ADDRESS = "131.107.255.255";
try
{
// Check NCSI test link
var webClient = new WebClient();
string result = webClient.DownloadString(NCSI_TEST_URL);
if (result != NCSI_TEST_RESULT)
{
return false;
}
// Check NCSI DNS IP
var dnsHost = Dns.GetHostEntry(NCSI_DNS);
if (dnsHost.AddressList.Count() < 0 || dnsHost.AddressList[0].ToString() != NCSI_DNS_IP_ADDRESS)
{
return false;
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
return false;
}
return true;
}
}
}
Connected값으로 네트워크가 연결됐는지 확인해서 처리함.
Connected -> True일땐 네트워크 연결정상
Connected -> False일땐 네트워크 연결끊김
INetwork.cs(전체코드)
namespace Network
{
/// <summary>
/// 네트워크 연결이 되거나 해제됐을때 작동시킬라고 추가해줌.
/// </summary>
public interface INetwork
{
void D_ConnectEvent(bool connect);
}
}
반응형
'C# > 코인프로그램 - 코드' 카테고리의 다른 글
[C#/WPF] Upbit프로젝트 DialogAccess (0) | 2023.11.27 |
---|---|
[C#/WPF] Upbit프로젝트 Access (0) | 2023.11.27 |
C# FileIO 프로젝트 (0) | 2023.11.27 |
[C#/WPF] Language 프로젝트 (0) | 2023.11.26 |
[C#/WPF] Prism으로 작업. 현재까지 진행된 상황정리. (0) | 2023.11.26 |