В своем проекте мне необходимо проверять доступность некоторых устройств, в документации я сразу нашел Ping, но он не дал мне желаемого результата и показался непонятным, поэтому я решил воспользоваться Ping из System.Net, который легко и просто (ИМХО) возвращает значение IPStatus.Success тру или фалс, но столкнулся со следующей проблемой: если использовать "UnityEngine", то происходит конфликт, т.к. в нем тоже есть класс Ping, а без MonoBehaviour я из другого скрипта не могу получить доступ к первому. В общем вот примерчик:
1) Тут я хочу получить статус, пингую девайс "146.27.32.11"
Синтаксис:
Используется csharp
//using UnityEngine;
using System.Collections;
using System.Net.NetworkInformation;
using System.Net;
public class PingDevice { //: MonoBehaviour {
Ping p = new Ping();
public bool statusOK;
public void GetDeviceStatus () {
PingReply pr = p.Send("146.27.32.11");
IPStatus status = pr.Status; //IPStatus.Success
IPAddress ipAddr = pr.Address;
long pingTime = pr.RoundtripTime;
if(status==IPStatus.Success) {
statusOK=true;
}
else {
statusOK=false;
}
}
}
using System.Collections;
using System.Net.NetworkInformation;
using System.Net;
public class PingDevice { //: MonoBehaviour {
Ping p = new Ping();
public bool statusOK;
public void GetDeviceStatus () {
PingReply pr = p.Send("146.27.32.11");
IPStatus status = pr.Status; //IPStatus.Success
IPAddress ipAddr = pr.Address;
long pingTime = pr.RoundtripTime;
if(status==IPStatus.Success) {
statusOK=true;
}
else {
statusOK=false;
}
}
}
2) Тут я хочу по кнопочке запустить этот самый пинг, но не могу получить доступ к первому, так как класс не MonoBehaviour:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class TestPing : MonoBehaviour {
public PingDevice pinger;
void OnGUI() {
if(GUI.Button (new Rect (20, 40, 50, 20),"Ping")){
pinger.GetDeviceStatus();
}
if (pinger.statusOK == true)
GUI.Label (new Rect (20, 0, 50, 20), "OK");
else
GUI.Label (new Rect (20, 0, 50, 20), "NOT OK");
}
}
using System.Collections;
public class TestPing : MonoBehaviour {
public PingDevice pinger;
void OnGUI() {
if(GUI.Button (new Rect (20, 40, 50, 20),"Ping")){
pinger.GetDeviceStatus();
}
if (pinger.statusOK == true)
GUI.Label (new Rect (20, 0, 50, 20), "OK");
else
GUI.Label (new Rect (20, 0, 50, 20), "NOT OK");
}
}
Подскажите, пожалуйста, как достучаться в моем случае до PingDevice, или как получить статус через родной Ping