Esempio n. 1
0
        private IEnumerator PingConnect(string ip, NetPingCallBack callback)
        {
            if (Config.Detail_Debug_Log())
            {
                Debug.Log("----------net ping 1->" + ip);
            }
            state = PingState.PingNotConnect;
            if (ip == null)
            {
                if (callback != null)
                {
                    callback(false, -1);
                }
                yield break;
            }

            state = PingState.PingIng;
            Ping ping = new Ping(ip);

            int nTime = 0;

            if (Config.Detail_Debug_Log())
            {
                Debug.Log("----------net ping 2->" + ip);
            }
            while (!ping.isDone)
            {
                yield return(new WaitForSeconds(0.1f));

                if (nTime > 20) //2秒
                {
                    nTime = 0;
                    state = PingState.PingNotConnect;
                    if (callback != null)
                    {
                        callback(false, -1);
                    }
                    yield break;
                }
                nTime++;
            }

            if (Config.Detail_Debug_Log())
            {
                Debug.Log("----------net ping 3->" + ip + "^" + ping.isDone + "^" + ping.time);
            }

            if (ping.isDone)
            {
                state = PingState.PingOK;
                if (callback != null)
                {
                    callback(true, ping.time);
                }
                yield break;
            }
        }
Esempio n. 2
0
        public static void Ping(string ip, NetPingCallBack callback)
        {
            if (callback == null)
            {
                return;
            }
            NetPing ping = GenPing();

            if (ping == null)
            {
                Debug.LogError("ping num is to much");
                return;
            }

            CoroutineHelper.CreateCoroutineHelper(ping.PingConnect(ip, (state, delay) =>
            {
                ping.index = -1;
                callback(state, delay);
            }));
        }