Как получить файл при успешном подключении в TURNSocket XMPPFramework в ios? - PullRequest
9 голосов
/ 05 декабря 2011

Я хочу использовать TURNSocket для передачи файла между двумя пользователями.

Пользователь1: (iphone sumulator) Пользователь2: (пользователь Spark)

Теперь сокет подключен, и я хочу отправить файл пользователю1 от пользователя2 через Spark. И сумматор iphone может получить эти сообщения:

<iq xmlns="jabber:client" id="P1J6b-29" to="User1@local/75694fce" from="User2@local/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>

Я видел их в XMPP отправке / получении файла в iphone SDK ...? тема о том, как обрабатывать метод didSucceed, но я не знаю, как получить файл, который был отправлен пользователем Spark на сумматоре iphone.

Затем в вашей реализации didSucceed отправьте данные в переданный сокет, используя:

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

Наконец, закройте розетку:

- (void)disconnectAfterWriting;

Так как же написать код для получения файла этим или другим способом?

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

1 Ответ

1 голос
/ 02 августа 2013

Попробуйте FastSocket https://github.com/dreese/fast-socket. Лучше всего для TCP-соединения между iPhone или серверами. Пожалуйста, прочитайте также документы (особенно модульные тесты) для получения очень подробных инструкций по их использованию. Вам нужно будет знать IP-адреса каждого из устройств, которые необходимы для соединения друг с другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...