2011-12-05 5 views
9

Chcę użyć TURNSocket, aby przesłać plik między dwoma użytkownikami.Jak otrzymać plik podczas łączenia sukcesu w TURNSocket z XMPPFramework w ios?

User1: (iPhone sumulator) User2: (użytkownik Spark)

teraz gniazdo jest połączone, i chcę, aby wysłać plik do User1 z User2 przez Spark. A sumulator iPhone może otrzymał te wiadomość:

<iq xmlns="jabber:client" id="P1J6b-29" to="[email protected]/75694fce" from="[email protected]/Spark 2.6.3"  type="set"> 
    <si xmlns="http://jabber.org/protocol/si" id="jsi_8334411215933911079" mime-type="image/png" 
     profile="http://jabber.org/protocol/si/profile/file-transfer"> 
    <file xmlns="http://jabber.org/protocol/si/profile/file-transfer" name="a2.png" size="12618"> 
     <desc>Sending file</desc> 
    </file> 
    <feature xmlns="http://jabber.org/protocol/feature-neg"> 
     <x xmlns="jabber:x:data" type="form"> 
     <field var="stream-method" type="list-single"> 
      <option> 
      <value>http://jabber.org/protocol/bytestreams</value> 
      </option> 
      <option> 
      <value>http://jabber.org/protocol/ibb</value> 
      </option> 
     </field> 
     </x> 
    </feature> 
    </si> 
</iq> 

widziałem je w XMPP Sending/Receving file in iphone sdk ...? temacie, jak radzić sobie w didSucceed metody, ale nie wiem jak odebrać plik, który został wysłany przez użytkownika zapłonowej iPhone sumulator.

Następnie w implementacji didSucceed wysłać dane na gnieździe, który został przekazany w, używając:

- (void)writeData:(NSData *)data 
    withTimeout:(NSTimeInterval)timeout 
      tag:(long)tag; 

Wreszcie zamknąć Gniazdo:

- (void)disconnectAfterWriting; 

Tak jak kod, aby otrzymać plik w tej metodzie lub innych?

- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket { 
    // Where is the NSData that can be find to used in writeData method ? 
} 
+0

Cześć Neil, czy to działa? –

Odpowiedz

1

Wypróbuj FastSocket https://github.com/dreese/fast-socket. Najlepiej dla połączenia TCP między urządzeniami iPhone lub serwerami. Przeczytaj również dokumentację (szczególnie testy jednostkowe), aby uzyskać bardzo szczegółową instrukcję, jak jej używać. Będziesz musiał znać adresy IP każdego urządzenia, które są potrzebne do połączenia się ze sobą.