2014-04-08 6 views
0

블루투스 연결 (GameKit, 특히 iOS6 호환성)을 사용하는 서버 클라이언트 게임에서 하나 이상의 클라이언트 장치 (iPhone/iTouch)가 서버 장치 (iPad)에 타임 스탬프를 보냅니다. 각 클라이언트의 버튼을 탭하면다른 시간 간격으로 이어지는 NSDate 동시 생성

[[NSDate date] timeIntervalSince1970] 

을 ...하고 서버에 NSData 같은 페이로드 값을 전송하며, 즉 각각의 클라이언트 부른다.

클라이언트가 하나만 연결된 경우 생성되어 서버로 전송되는 시간은 실제 탭의 시간과 동일합니다. 2 명 이상의 클라이언트가 접속 된 경우, 모든 클라이언트가 정확하게 동일한 시간에 탭핑 되더라도 생성 된 시간은 현저하게 달라진다. 동시에 탭

클라이언트 1 및 2 : 1 타임 스탬프 = 1396974546.558433 (1970 보낸 시간 간격)

  • 클라이언트 2 타임 스탬프 = 1396974551.274747 (1970 보낸 시간 간격)
  • 클라이언트

즉 클라이언트 2는 클라이언트 1로부터 5 초 밖에 걸리지 않습니다. 실제로 동시 탭핑이 어렵 기 때문에 몇 밀리 초의 차이를 수용 할 수 있지만 여러 초는 용인 할 수 없습니다. 추가 클라이언트를 추가하면 시간에 다소 차이가 있지만 일반적으로 몇 초가 걸립니다. 즉, 뭔가가 운송 또는에서 일어나고 아니에요 사람들은 (클라이언트에 의해 생성되는 것과 동일한 타임 스탬프가 서버에서 수신되고 있습니다

는, 타임 스탬프가 클라이언트 다르게 생성되고 더욱 신비로운 일을 만들려면 영수증).

나는이 문제의 원인을 놓치고 있습니다. 어떤 아이디어?

+0

두 클라이언트의 홈 화면으로 이동하여 시계 앱 아이콘을 봅니다. 두 번째 손이 동기화되어 있거나 5 초가지나 갔습니까? – rmaddy

답변

0

[[NSDate date] timeIntervalSince1970] 는 기기에 설정된 시간과 관련이 있으므로 서버에 동일한 시간을 보내는 두 기기에 의존 할 수 없습니다.

나는 Multipeer 연결을 사용하여 뭔가를 개발할 때 비슷한 문제가 있고, 정확한 시간을 도출 요청 자체의 지연과 함께 여러 NTP 서버에서 시간 정보를 사용 ios-ntp라는 라이브러리를 사용하여 끝났다. 그것은 나를 위해 꽤 잘 돌아갔다.

0

장치가 떨어져 오초으로 해제, 어떤 이유에서입니다 것입니다 내 생각 엔

이런 말을 내 이유는

[[NSDate date] timeIntervalSince1970] 

은 일반적으로 서브 밀리 초 정밀도를 가지고 있다는 것입니다

+0

네, 맞습니다. ChrisH의 답변에 따르면 장치의 시간 시계는 sync'd가 아닙니다. 완벽하지는 않지만 ios-ntp를 사용하여 간격을 줄였습니다. – user2709279