문제

나를 구현하기 위해 노력하고 P2P 응용 프로그램.내가 무엇을 하려고 전송자 지정 nsobject 의 클래스 사이의 데이터 장치입니다.나는지 알아낼 수 있을 때는"receivedData"메소드에 의해 호출됩니다 GKSession.

여기에서 내가 했

  1. 보통 연결을 보여주는 대화 상자를 가진 동료들

  2. 때 응용 프로그램을 받는 상태 변경에 대한 피어 및 국가 연결되어 있는,나를 보내는 모든 데이터를 동료(이상적으로 호출해야 할 때 각 피어지는 연결)을 이용하여 NSCoding 방법

  3. 에 receivedData,나는 디코딩 NSData 고 다시 nsobject 의 인스턴스

문제입 세션 피어:didChangeState: 방법을 못하고 모두에서 호출이 불가능 합니다.그것은 단지 가져오라고 장치에는 도청"Connect"버튼을 PeerPicker 경고입니다.

질문

  1. 때 didChangeState 라는 그 누구?지 않아야 복을 주시리라 각 peer 면 그들은 연결되어 있습니까?

  2. 때 receivedData:라는 방법과에 대한 누구?그것은이라는 영수증을 확인하는 메시지(핸드셰이크)또는 전송할 데이터를 전송하여 다른가요?

어떤 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

그것의 생각으로 더 많은'마스터/슬레이브'대신에'피어 투 피어있다.' 아마도 양쪽 모두 설정되어 있 GameKit 및 그들의 대리자가 할당됩니다.한쪽에는 연결을 시작 얻을 통해 알 GKPeerStateConnected 상태 값을 변경하는 수신기는 초대를 수락과 연결되었 시작할 수 있도록 보내는 물건니다.

받는 쪽을,그러나,그 첫 번째는 것을 알고 싶은 사람은 이야기를 통해 didReceiveConnectionRequestFromPeer 대리인 방법입니다.저장 세션을 나중에 사용하기 위해 다음 돌아와 통화 acceptConnectionFromPeer 하여 그것을 받아들입니다.그때부터,그것은 무엇을 통해 전송해 receiveData 방법입니다.

최고의 방법은 작은 상태계를 관리하는 어떤 상태 각 측면에서.보낸 사람에게만 보내면 그것을 얻 GKPeerStateConnected 이벤트입니다.기에 넣 connected 국가면 그것을 받 연결 요청을 수행할 수 있도록 모든 설정을 할 필요가 시작하기 전에 얻는 데이터입니다.

이후 네트워크 추가 GKSession 수신 수 있습니다 다음 주변에 돌 사용하여 동일한 세션에 인스턴스에서 얻 didReceiveConnectionRequestFromPeer 고 그것을 사용하게 다시 작성하 보낸 사람은(누가 있어야 한 자 receiveData 방법 이라는 응답 수신기에서).

한 가지를 염두에 있다는 암시적인 데이터의 크기 제한 버퍼를 보낼 수 있습을 통해 GameKit.할 수 있습을 실험하는 것을 발견하는 시스템에 대한(I get 사이에 뭔가 5K 및 10K--어떤 이유로 그것을 변경될 수 있음).할 수 있는 코드를 분할 NSData 로 덩어리가 및 관리 packetizing/depacketizing 데이터입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top