2015-03-23 17 views
1

Я использую Unity3D для создания игры.Unity, время NTP, блокируется

Мне нужно получить время NTP, чтобы игроки не обманывали, устанавливая время своего компьютера в будущее, чтобы получить бонусы.

Я могу получить время для настольного приложения, но когда я переключаюсь на веб-плеер, он блокируется.

Любые предложения?

Мой код заключается в следующем:

static string[] servers = new string[] { 
"time.nist.gov", 
"time-b.nist.gov", 
"time-a.nist.gov", 
"nist1-ny.ustiming.org", 
"nist1-chi.ustiming.org", 
"ntp-nist.ldsbc.edu", 
"nist1-la.ustiming.org" 
}; 

public static DateTime GetNISTDate(){ 
for (int i = 0; i < 7; i++){ 
try 
{ 
StreamReader reader = new StreamReader(new System.Net.Sockets.TcpClient(servers[i], 13).GetStream()); 
serverResponse = reader.ReadToEnd(); 
Debug.Log(serverResponse); 
reader.Close(); 
// Check to see that the signature is there 
if (serverResponse.Length > 47 && serverResponse.Substring(38, 9).Equals("UTC(NIST)")) { 
// Parse the date 
int jd = int.Parse(serverResponse.Substring(1, 5)); 
int yr = int.Parse(serverResponse.Substring(7, 2)); 
int mo = int.Parse(serverResponse.Substring(10, 2)); 
int dy = int.Parse(serverResponse.Substring(13, 2)); 
int hr = int.Parse(serverResponse.Substring(16, 2)); 
int mm = int.Parse(serverResponse.Substring(19, 2)); 
int sc = int.Parse(serverResponse.Substring(22, 2)); 
if (jd > 51544) 
yr += 2000; 
else 
yr += 1999; 
date = new DateTime(yr, mo, dy, hr, mm, sc); 
Debug.Log(date); 
break; 
} 
} 
catch{ 
} 
} 
return date; 
} 

ответ

2

Я не знаком с Unity Web Player, но уверен, что звучит как same-origin policy вопрос.

Возможно, вам потребуется извлечь время с сервера, с которого загружается ваш код (это может быть так же просто, как сделать HTTP-запрос и разбор the Date header; просто запомните disable caching).

Использование собственного сервера как источника времени, как правило, является лучшей практикой в ​​любом случае — Публичные серверы NTP, такие как those operated by NIST, эксплуатируются добровольно и бесплатно их владельцами и используются миллионами людей через Интернет; это просто хорошие манеры, чтобы не накладывать на них больше нагрузки, чем вам нужно.