网络:Unity3d检测当前网络环境wifi/3G/4G,以及对服务器的Ping操作
2017-11-23 14:37
531 查看
主要用到两个Unity的API:一个是Application.internetReachability,用来获取当前网络类型!需要注意的是,这里只是判断出来当前设备的网络环境,并不代表能连接到互联网上!是否能连接到互联网上需要通过下面的ping去操作!
使用方法如下:
if (NetWorkTxt != null)
{
if(Application.internetReachability == NetworkReachability.NotReachable)
NetWorkTxt.text = "当前网络:不可用";
else if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
NetWorkTxt.text = "当前网络:3G/4G";
else if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
NetWorkTxt.text = "当前网络 : WIFI";
}
另一个是Ping这个类,其实大多数人都会直接使用www去做了,但是这里用ping有个好处,就是你自己可以控制网络请求中断间隔时间,www默认的时间太长了,这里我使用2秒来作为检测时间,超过2秒就认为服务器无法访问!
使用方法如下:
C#
private void CheckResServerNetWorkReady()
{
StopCoroutine(PingConnect());
StartCoroutine(PingConnect());
}
IEnumerator PingConnect()
{
m_PingResServerState = PingState.PingIng;
//ResServer IP
string ResServerIP = GetCurrentNormalIP();
//Ping網站
Ping ping = new Ping(ResServerIP);
int nTime = 0;
while (!ping.isDone)
{
yield return new WaitForSeconds(0.1f);
if (nTime > 20) //
time 2 sec, OverTime
{
nTime = 0;
Debug.Log("連線失敗
: " + ping.time);
m_PingResServerState = PingState.CanNotConnectServer;
yield break;
}
nTime++;
}
if(ping.isDone)
{
yield return ping.time;
m_PingResServerState = PingState.PingOK;
Debug.Log("連線成功");
}
}
喜欢2
使用方法如下:
if (NetWorkTxt != null)
{
if(Application.internetReachability == NetworkReachability.NotReachable)
NetWorkTxt.text = "当前网络:不可用";
else if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
NetWorkTxt.text = "当前网络:3G/4G";
else if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
NetWorkTxt.text = "当前网络 : WIFI";
}
另一个是Ping这个类,其实大多数人都会直接使用www去做了,但是这里用ping有个好处,就是你自己可以控制网络请求中断间隔时间,www默认的时间太长了,这里我使用2秒来作为检测时间,超过2秒就认为服务器无法访问!
使用方法如下:
C#
private void CheckResServerNetWorkReady()
{
StopCoroutine(PingConnect());
StartCoroutine(PingConnect());
}
IEnumerator PingConnect()
{
m_PingResServerState = PingState.PingIng;
//ResServer IP
string ResServerIP = GetCurrentNormalIP();
//Ping網站
Ping ping = new Ping(ResServerIP);
int nTime = 0;
while (!ping.isDone)
{
yield return new WaitForSeconds(0.1f);
if (nTime > 20) //
time 2 sec, OverTime
{
nTime = 0;
Debug.Log("連線失敗
: " + ping.time);
m_PingResServerState = PingState.CanNotConnectServer;
yield break;
}
nTime++;
}
if(ping.isDone)
{
yield return ping.time;
m_PingResServerState = PingState.PingOK;
Debug.Log("連線成功");
}
}
喜欢2
相关文章推荐
- Unity3d如何检测当前网络环境wifi/3G/4G,以及对服务器的Ping操作
- Unity3d检测当前网络环境wifi/3G/4G,以及对服务器的Ping操作
- 检测网络是否正常(ping,Telnet,tracert以及tnsping)
- 在Qt中使用QProcess类实现检测当前网络是否能ping通某段IP地址
- android 判断网络连接、sim卡信息以及ping操作是否网络连接正常
- Unity&网络--HLAPI(1):服务器同步变量,‘脏标’模式以及[SyncVar]特性
- c# 操作当前应用程序所在路径以及系统环境变量
- go 语言使用ssh包连接操作Linux服务器,使用ping包查看服务器网络是否正常,使用cron包定时查询该服务器CPU使用情况
- windows检测当前网络环境变化
- Git 开发环境、服务器搭建以及常用操作
- 在Unity中判断当前网络连接方式以及连接状态
- 获取当前网络信息,状态,以及ping网址
- python从网络时间服务器获取并打印当前时间以及pip安装ntplib的一次体验
- Unity中实时检测当前手机网络,网络切换时给用户一个提示
- c语言 实现ping 功能/效果 检测当前网络是否连通
- Android通过ping操作进行网络检测,并返回花费的时间
- python 实现多线程ping检测服务器情况
- 用vsftp自架Linux网络安装服务器,以及Redhat局域网安装的解决办法
- Unity 3D 之开发环境的搭建
- linux命令基本操作以及Java的安装与环境的配置