Как использовать подключение TurnSocket (XEP-0065: SOCKS5 Bytestreams)? XEP-0096: Передача файлов СИ? [сокет для записи данных]?

Я пытаюсь передать файл через XMPP на iOS, используя XMPPFramework и OpenFire. Основа моего кода взята из следующего туториала. У меня есть успешное подключение TurnSocket (XEP-0065: SOCKS5 Bytestreams), но я не могу понять, как использовать его для отправки данных. У меня есть 2 соображения, на каждом из которых я застрял: 1. Вызов [socket writeData] и 2. Использование «XEP-0096: передача файлов SI».

Возможное решение 1. Вызов [socket writeData] В моем делегате приложения у меня есть метод didSucceed. Я могу вызвать [socket writeData] вот так...

- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {

    NSLog(@"TURN Connection succeeded!");

    [socket writeData:myData withTimeout:60.0f tag:0]; 
    [turnSockets removeObject:sender];
}

Обновлено 14 июня: это правильно? Если да, то как другой пользователь считывает данные? Я пытался реализовать

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

, но он никогда не вызывается. Как я могу гарантировать, что он будет вызван?

Возможное решение 2 — XEP-0096: Передача файлов SI Нужно ли использовать XEP-0096: передача файлов SI? Если да, то как мне использовать мое успешное соединение в XEP-0096 XML, которое мне нужно сформировать? Документы XEP-0096подразумевают наличие атрибута «хэш», но я не знаю, откуда он взялся.

напр.


  
    
      This is a test. If this were a real file...
    
    
      
        
          
          
        
      
    
  

7
задан Andy A 18 June 2012 в 11:01
поделиться