Unity에서 2 시간마다 플레이어 수명을 재설정해야하는 게임을 개발 중이며 부정 행위를 피하기 위해 인터넷 시간을 사용하려고합니다. 이를 위해 C#에서 간단한 방법을 사용하여 microsoft.com에서 DateTime을 가져 왔습니다. 문제는 때때로 연결이 실패하고, 이런 일이 발생하면 부울을 반환하기를 원하므로 System.DateTime.Now를 가져와 연결이 가능 해지면 인터넷 시간을 다시 확인할 수 있습니다. 나는 어떤 것을 시도했지만 아무 일도 없었다. 사용중인 코드는 다음과 같습니다.HttpWebRequest.GetResponse()가 연결 실패시 값을 반환하도록 설정합니다.
public DateTime GetInternetTime()
{
var myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
myHttpWebRequest.Timeout = 5000;
myHttpWebRequest.ReadWriteTimeout = 5000;
var response = myHttpWebRequest.GetResponse();
if (response == null)
{
dateTime = DateTime.Now;
connecionFailed = true;
}
string todaysDates = response.Headers["date"];
dateTime = DateTime.ParseExact(todaysDates, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.AssumeUniversal);
connecionFailed = false;
return dateTime;
}
도와주세요! 나는 정말로 이것에 붙어있다!
"연결 실패"에 대해 설명하십시오. 정확한 오류 메시지는 무엇이며 어떤 코드 행에 있는지 설명하십시오. – PhillipH
이것은 안드로이드 게임이며 때로는 사용자가 인터넷에 액세스 할 수 없거나 시간이 초과되는 경우가 있습니다. 이 경우 콘솔에서 다음을 throw합니다. WebException : 요청 시간이 초과되었습니다. System.net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult). 내가 알고 싶은 것은 사용자가 인터넷에 액세스 할 수 없거나 시간이 초과 될 때 {connectionFailed = true}를 취하는 방법입니다. – ronald677br