u3d修改服务器ip,Unity ping一个服务器 ip 的工具类

using UnityEngine;

using System.Collections;

public class UnityPing : MonoBehaviour

private static string s_ip = "";

private static System.Action s_callback = null;

private static UnityPing s_unityPing = null;

private static int s_timeout = 2;

public static void CreatePing(string ip, System.Action 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();

///

/// 超时时间(单位秒)

///

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值