하아찡

C# Network 프로젝트 본문

C#/코인프로그램 - 코드

C# Network 프로젝트

하아찡 2023. 11. 27. 02:26

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);
    }
}
반응형