当需要进行网络请求之前,最好做一下网络检测,如果请求超时,可能会导致程序崩溃,下面介绍3种常见的方法
1. 移动端的检测网络(用于Android和iOS)
switch (Application.internetReachability)
{
case NetworkReachability.NotReachable:
test1.text = "没网";
break;
case NetworkReachability.ReachableViaLocalAreaNetwork:
test1.text = "wifi";
break;
case NetworkReachability.ReachableViaCarrierDataNetwork:
test1.text = "3g/4g";
break;
}
2.用于PC端的网络检测(由于第一种方法在Windows和Mac上都只能检测当前的网络环境,不能检测到是否真的有网络上的交互,eg:在Windows无论有没有网都是检测到WiFi连接),有两种用于PC端检测的方式:WWW,Ping
- WWW:在进行Post或Get请求的时候可以通过检测www.error来确定是否有连接服务器,但是这个方法的返回滞后时间太长(有可能5秒,有可能10秒)
private IEnumerator postData() {
WWWForm wform = new WWWForm();
WWW www = new WWW(url);
yield return www;
if(www.error)
{
Dosth;
}
}
3. Ping方法,就是去ping服务器(必须使用协程)
IEnumerator Pingip()
{
string ip = "...";
float pingTime = 0;
Ping ping = new Ping(ip);
while (!ping.isDone)
{
yield return new WaitForSeconds(0.1f);
if (pingTime > 3.0)
{
Debug.Log("ping失败");
break;
}
pingTime+=0.1f;
}
if (ping.isDone)
{
Debug.Log("ping成功");
}
}