unity ping 一个服务器 ip 的工具类
来源:互联网 发布:算命准吗 知乎 编辑:程序博客网 时间:2024/06/03 12:26
最近公司需要对服务器进行速度侦测,而不依赖于服务器返回的时间戳,所以需要使用 unity 自带的 ping 类。
这里提供一个现成的工具类:
using UnityEngine;using System.Collections;public class UnityPing : MonoBehaviour{ private static string s_ip = ""; private static System.Action<int> s_callback = null; private static UnityPing s_unityPing = null; private static int s_timeout = 2; public static void CreatePing(string ip, System.Action<int> callback) { if (string.IsNullOrEmpty(ip)) return; if (callback == null) return; if (s_unityPing != null) return; s_ip = ip; s_callback = callback; GameObject go = new GameObject("UnityPing"); DontDestroyOnLoad(go); s_unityPing = go.AddComponent<UnityPing>(); } /// <summary> /// 超时时间(单位秒) /// </summary> public static int Timeout { set { if (value > 0) { s_timeout = value; } } get { return s_timeout; } } private void Start() { switch (Application.internetReachability) { case NetworkReachability.ReachableViaCarrierDataNetwork: // 3G/4G case NetworkReachability.ReachableViaLocalAreaNetwork: // WIFI { StopCoroutine(this.PingConnect()); StartCoroutine(this.PingConnect()); } break; case NetworkReachability.NotReachable: // 网络不可用 default: { if (s_callback != null) { s_callback(-1); Destroy(this.gameObject); } } break; } } private void OnDestroy() { s_ip = ""; s_timeout = 20; s_callback = null; if (s_unityPing != null) { s_unityPing = null; } } IEnumerator PingConnect() { // Ping網站 Ping ping = new Ping(s_ip); int addTime = 0; int requestCount = s_timeout * 10; // 0.1秒 请求 1 次,所以请求次数是 n秒 x 10 // 等待请求返回 while (!ping.isDone) { yield return new WaitForSeconds(0.1f); // 链接失败 if (addTime > requestCount) { addTime = 0; if (s_callback != null) { s_callback(ping.time); Destroy(this.gameObject); } yield break; } addTime++; } // 链接成功 if (ping.isDone) { if (s_callback != null) { s_callback(ping.time); Destroy(this.gameObject); } yield return null; } }}
阅读全文
0 0
- unity ping 一个服务器 ip 的工具类
- PING ip 工具类
- ping服务器网速的工具
- 一个Android下ping的简单工具类
- 发现一个非常好的ping工具
- 获取IP地址的一个工具类
- java ping ip工具优化
- ping不通服务器ip原因
- java代码ping服务IP工具类(Windows,Linux环境)
- 一个PING指定IP的控件,包含测试代码
- ping他人的ip
- 当能电脑能够ping通同一个网段的ip,却ping不通网关的解决方法
- ping 一个IP段可用IP批处理文件
- SQL Ping的工具
- 设置IP策略拒绝用户Ping服务器
- C#界面设计之Ping服务器IP地址
- ping linux云服务器ip不通
- 分享一个获取手机IP地址的工具类,
- 使用Hexo搭建博客,备份至GitHub过程
- 你真的会做决策吗?认知0007
- 用Alfred的Script Filter获取GitHub的个人仓库
- 特征选择
- 垃圾回收概念及基础
- unity ping 一个服务器 ip 的工具类
- Ueditor富文本编辑器--Ctrl V 粘贴后原有图片显示错误
- python预处理方法
- PHP与微信小程序的纠葛---3
- 学习笔记TF014:卷积层、激活函数、池化层、归一化层、高级层
- CAD文字宽度因子无法修改解决办法
- python多线程
- 淘淘商城系列——SSM框架整合之Dao层整合
- 如何设置word页码 第几页共几页 从第二页算起