Right now do !

[C#응용] 네트워크 자네 살아 있는가?

by 지금당장해

 고객사에 윈도우 응용서비스 응용프로그램을 공급했다. 이 서비스 프로그램은 코어 모듈들에 대한 자가 업데이트 기능이 있고 서비스는 핵심이 되는 이 파일(어셉블리)들을 플러그인 하는 구조를 가지고 있다. 이 실행을 매 서비스가 기동하는 시점에 한다. 일반 사용자가 서비스를 중지 했다 시작하는 일이 흔하지 않고 결국 시스템이 처음 부팅하는 시점에 서비스가 시작된다. 헌데 아주 아주 느린 고객 PC들에서 WebClient를 이용한 File Download시 예외 로그가 보이는 것이다. 현장 PM의 증언으로는 이런 PC들은 윈도우 로그인 하고나서 한참이 지나도 인터넷 접속 상태 트레이 아이콘이 계속 보인다는 것이다. 윈도우 로그온 세션이 시작된 후 10초가 지나서 다운로드를 시도 한건데.. 아직도..... (윈도우 7이 더 그런다. 미신이다 아무 근거 없다.)


 그래서 결단을 했다. 적극적으로 네트워크 상태를 알아보자. 



        
        using System.Net.NetworkInformation;

        private bool IsEstablishedNetwork()
        {
            bool networkUp = NetworkInterface.GetIsNetworkAvailable();
            bool pingResult = true;

            if (networkUp)
            {
                string addr = ConfigurationManager.AppSettings["PingAddress"];

                if (string.IsNullOrEmpty(addr))
                {
                    pingResult = true;
                }
                else
                {
                    Ping pingSender = new Ping();
                    PingReply reply = pingSender.Send(addr, 300);
                    pingResult = reply.Status == IPStatus.Success;
                }
            }

            return networkUp & pingResult;
        }

위 코드중에 핵심은 NetworkInterface.GetIsNetworkAvailable() 함수인데 마이크로소프트 문서에 이렇게 요약하고 있다. "네트워크 연결이 사용 가능한지 여부를 나타냅니다.


이 코드는 일단 내 내트워크가 멀정하냐이고 더불어 대상이되는 서버의 상태를 알아보기위해 설정에 지정됭 IP Address로 Ping을 해보고 최종 결론을 내린다. 네트워크 나는 살아 있다. 다운로드 해라....

블로그의 정보

지금 당장 해!!!

지금당장해

활동하기