Ejemplo n.º 1
0
    private void CallResult(PingRuntimeData runtimeData)
    {
        int        time      = runtimeData.ping == null ? -1 : runtimeData.ping.time;
        bool       isSuccess = runtimeData.errorReason == ErrorReason.None ? true : false;
        PingResult result    = new PingResult(isSuccess, runtimeData.errorReason, runtimeData.host, runtimeData.ip, time);

        pingResults.Add(result);

        if (runtimeData.ping != null)
        {
            runtimeData.ping.DestroyPing();
        }

        if (s_pingResultCallback != null)
        {
            s_pingResultCallback(result);
        }

        if (pingRuntimeDatas.Count <= 0)
        {
            if (s_OnComplete != null)
            {
                s_OnComplete(pingResults.ToArray());
            }
            Destroy(this.gameObject, 0.5f);
        }
    }
Ejemplo n.º 2
0
    private void StartRun(string host, float timeOut, int runTimes)
    {
        if (runTimes <= 0)
        {
            Debug.LogError("Ping runTimes cant < 1, now:" + runTimes);
            Destroy(gameObject, 1f);
            return;
        }
        AddressFamily af;
        string        ip = ResolveHostNameToIP(host, out af);

        Debug.Log("host :" + host + " to ip :" + ip + " AddressFamily:" + af);
        network = Application.internetReachability;
        for (int i = 0; i < runTimes; i++)
        {
            PingRuntimeData runtimeData = new PingRuntimeData();
            runtimeData.ip             = ip;
            runtimeData.host           = host;
            runtimeData.s_timeout      = timeOut;
            runtimeData.currentUseTime = 0;
            runtimeData.delayStartTime = 0.05f * (i + 1);
            if (string.IsNullOrEmpty(ip))
            {
                runtimeData.isFinish    = true;
                runtimeData.errorReason = ErrorReason.UnreachableAddress;
            }

            pingRuntimeDatas.Add(runtimeData);
        }
    }
Ejemplo n.º 3
0
    private void RunPingAction(PingRuntimeData runtimeData)
    {
        switch (network)
        {
        case NetworkReachability.ReachableViaCarrierDataNetwork:   // 3G/4G
        case NetworkReachability.ReachableViaLocalAreaNetwork:     // WIFI
        {
            if (runtimeData.ping.isDone)
            {
                runtimeData.isFinish = true;
                if (runtimeData.ping.time == -1)
                {
                    runtimeData.errorReason = ErrorReason.TimeOut;
                }
            }
            else
            {
                if (runtimeData.currentUseTime >= runtimeData.s_timeout)
                {
                    runtimeData.isFinish = true;
                    network = Application.internetReachability;
                    if (network == NetworkReachability.NotReachable)
                    {
                        runtimeData.errorReason = ErrorReason.NetNotReachable;
                    }
                    else
                    {
                        runtimeData.errorReason = ErrorReason.TimeOut;
                    }
                }
                else
                {
                    runtimeData.currentUseTime += Time.unscaledDeltaTime;
                }
            }
        }
        break;

        case NetworkReachability.NotReachable:     // 网络不可用
        default:
        {
            runtimeData.isFinish    = true;
            runtimeData.errorReason = ErrorReason.NetNotReachable;
            //  CallResult(PingState.NetNotReachable, -1);
            network = Application.internetReachability;
        }
        break;
        }
    }