コード例 #1
0
        /// <summary>
        /// 利用Ping方法确定是否可以通过网络访问远程计算机
        /// </summary>
        /// <param name="status">网络状态</param>
        /// <param name="ipAddressOrHostName">默认是www.baidu.com</param>
        /// <param name="timeout">默认是1000毫秒</param>
        /// <returns></returns>
        public static bool PingIsConnectedInternet(out System.Net.NetworkInformation.IPStatus status, string ipAddressOrHostName = "www.baidu.com", int timeout = 1000)
        {
            System.Net.NetworkInformation.Ping        p       = new System.Net.NetworkInformation.Ping();
            System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
            options.DontFragment = true;
            string data = "aa";

            byte[] buffer = Encoding.ASCII.GetBytes(data);
            //Wait seconds for a reply.
            status = System.Net.NetworkInformation.IPStatus.Unknown;
            try
            {
                System.Net.NetworkInformation.PingReply reply = p.Send(ipAddressOrHostName, timeout, buffer, options);
                status = reply.Status;
                if (status == System.Net.NetworkInformation.IPStatus.Success)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch
            {
                return(false);
            }
        }
コード例 #2
0
        /// <summary>
        /// Sends packets to host with itteration count
        /// </summary>
        /// <param name="host"></param>
        /// <param name="itterations"></param>
        /// <returns></returns>
        public void Send(string host, int itterations = 4)
        {
            for (int i = 0; i < itterations; i++)
            {
                this._pr         = this._p.Send(host);
                this._pingStatus = this._pr.Status;

                if (this._pingStatus == System.Net.NetworkInformation.IPStatus.Success)
                {
                    this._lastPingTime   = this._pr.RoundtripTime;
                    this._totalPingTime += this._lastPingTime;

                    var d = new Dictionary <string, long>();
                    d.Add("LastPingTime", this._lastPingTime);
                    d.Add("TotalPingTime", this._totalPingTime);

                    this._allPingTimes.Add(d);
                    this._allStatuses.Add(this._pingStatus);
                }
                else
                {
                    throw new System.Net.NetworkInformation.PingException(host + " could not be reached!");
                }
            }
        }
コード例 #3
0
        private bool pingServer(string rmrsDir)
        {
            bool up = true;

            System.Net.NetworkInformation.Ping      png    = new System.Net.NetworkInformation.Ping();
            System.Net.NetworkInformation.PingReply rp     = png.Send(rmrsDir, 120);
            System.Net.NetworkInformation.IPStatus  ipStat = rp.Status;
            if (ipStat != System.Net.NetworkInformation.IPStatus.Success)
            {
                up = false;
            }
            return(up);
        }
コード例 #4
0
 /// <summary>
 /// Ping远程IP
 /// </summary>
 /// <param name="szAddress"></param>
 /// <returns></returns>
 public static bool Ping(string szAddress)
 {
     System.Net.NetworkInformation.Ping     tmpPing = new System.Net.NetworkInformation.Ping();
     System.Net.NetworkInformation.IPStatus pr      = tmpPing.Send(szAddress, 1000).Status;
     if (pr == System.Net.NetworkInformation.IPStatus.Success)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
コード例 #5
0
ファイル: Form1.cs プロジェクト: sicness0/diag
 static bool pingURL(string URL)
 {
     Uri url = new Uri(URL);
     string pingurl = string.Format("{0}", url.Host);
     string host = pingurl;
     bool result = false;
     var IPStatus = new System.Net.NetworkInformation.IPStatus();
     var p = new System.Net.NetworkInformation.Ping();
     try
     {
         var reply = p.Send(host, 3000);
         if (reply.Status == IPStatus)
             return true;
     }
     catch { }
     return result;
 }
コード例 #6
0
ファイル: Form1.cs プロジェクト: sicness0/diag
        static bool pingURL(string URL)
        {
            Uri    url      = new Uri(URL);
            string pingurl  = string.Format("{0}", url.Host);
            string host     = pingurl;
            bool   result   = false;
            var    IPStatus = new System.Net.NetworkInformation.IPStatus();
            var    p        = new System.Net.NetworkInformation.Ping();

            try
            {
                var reply = p.Send(host, 3000);
                if (reply.Status == IPStatus)
                {
                    return(true);
                }
            }
            catch { }
            return(result);
        }
コード例 #7
0
 public PingInfo(string address, int time, System.Net.NetworkInformation.IPStatus result)
 {
     this.address = address;
     this.time    = time;
     this.result  = result;
 }
コード例 #8
0
        void _tracer_OnHopFail(IPRouteTracer tracer, int hop, int retry, IPAddress address, System.Net.NetworkInformation.IPStatus status)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new IPRouteTracer.HopFailDelegate(_tracer_OnHopFail), tracer, hop, retry, address, status);
                return;
            }

            _lStatus.Text = "Status: Hop " + hop + " failed! Response from [" + address + "]: \"" + status.ToString() + "\". Retry: " + retry + ".";
        }
コード例 #9
0
            public void Service(bool sampleTimerTriggered, Logging.IBasicLogger logger)
            {
                if (currentUserToken != null)
                {
                    TimeSpan currentElapsedTime = currentUserToken.sendTimeStamp.Age;

                    if (pingCompleteEventArgs != null)
                    {
                        // process ping response
                        if (!pingCompleteEventArgs.Cancelled && pingCompleteEventArgs.Error == null && pingCompleteEventArgs.Reply != null)
                        {
                            switch (pingIPStatus = pingCompleteEventArgs.Reply.Status)
                            {
                            case System.Net.NetworkInformation.IPStatus.Success:
                                h.Add(pingToReplyElapsedTime.TotalSeconds);
                                break;

                            case System.Net.NetworkInformation.IPStatus.TimedOut:
                                timeoutCount++;
                                timeoutCountGPI.VC = new ValueContainer(timeoutCount);
                                break;

                            default:
                                failureCount++;
                                failureCountGPI.VC = new ValueContainer(failureCount);
                                break;
                            }
                        }
                        else
                        {
                            pingIPStatus = System.Net.NetworkInformation.IPStatus.Unknown;
                            failureCount++;
                            failureCountGPI.VC = new ValueContainer(failureCount);
                        }

                        ReleaseToken();
                    }
                    else if (currentElapsedTime >= responseWaitTimeLimit)
                    {
                        pingIPStatus = System.Net.NetworkInformation.IPStatus.Unknown;
                        failureCount++;
                        failureCountGPI.VC = new ValueContainer(failureCount);

                        AbortCurrentPingRequest();
                    }

                    if (lastPingIPStatus != pingIPStatus)
                    {
                        if (pingIPStatus != System.Net.NetworkInformation.IPStatus.Success)
                        {
                            logger.Info.Emit("Ping to '{0}' [{1}] failed: {2} after {3:f6} sec", HostNameOrAddress, IPAddress, pingIPStatus, currentElapsedTime.TotalSeconds);
                        }

                        lastPingIPStatus = pingIPStatus;
                    }
                }

                if (sampleTimerTriggered && (currentUserToken == null))
                {
                    SendNextPingRequest(logger);
                }
            }
コード例 #10
0
        private void OnRSUnityPingComplete_Listener(NetworkReachability networkReachability, System.Net.NetworkInformation.IPStatus ipStatus)
        {
            _toggleResult.isOn = ipStatus == System.Net.NetworkInformation.IPStatus.Success;

            _buttonPing.interactable = true;
        }