XMPPFramework - TURNSocket не может получить данные, отправленные мной?

Я использовал openfire в качестве сервера xmpp и хочу передать файл через Turnsocket.

Конфигурация openfire (локальная):

xmpp.auth.anonymous                true
xmpp.domain                        local
xmpp.enabled                       true
xmpp.externalip                    proxy.local, 192.168.1.101, 127.0.0.1
xmpp.proxy.enabled                 true
xmpp.proxy.port                    7777
xmpp.proxy.transfer.required       false
xmpp.server.socket.active          true
xmpp.session.conflict.limit        0
xmpp.socket.ssl.active             true

Я протестировал передачу файлов в локальной среде, один пользователь вошел в систему с помощью Simulator (Sender), другой пользователь вошел в систему с помощью устройства (iPod, приемник).

  1. TURNSocket.m (оба менялись), меняем прокси

    + (void)initialize {
        ...
        proxyCandidates = [[NSMutableArray alloc] initWithObjects:@"local", nil];
        ...
    }
    
  2. Конфигурация как на отправителе, так и на получателе

    - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq {
    
        ...
    
        if ([TURNSocket isNewStartTURNRequest:iq]) {
    
            NSLog(@"IS NEW TURN request Receive.. TURNSocket..................");
    
            TURNSocket *turnSocket = [[TURNSocket alloc] initWithStream:xmppStream incomingTURNRequest:iq];
            [turnSockets addObject:turnSocket];
            [turnSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
            [turnSocket release];
        }
        return YES;
    }
    
  3. Настройка и вызов TURNSocket (Отправитель)

    TURNSocket *turnSocket = [[TURNSocket alloc] initWithStream:[self xmppStream] toJID:user.primaryResource.jid];
    [turnSockets addObject:turnSocket];
    [turnSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
    [turnSocket release];
    
  4. didSucceed вызвал оба (отправителя и получателя)

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

    }

  5. Отправить файл? об отправителе

    - (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
    
        NSData *dataF = [[NSData alloc] initWithContentsOfFile:
                                       [[NSBundle mainBundle] pathForResource:@"a1" ofType:@"png"]];
    
        [socket writeData:dataF withTimeout:60.0f tag:0];
    }
    

    ИЛИ: Здесь получены данные? (Получатель)

    - (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
    
        NSData *dataF = [[NSData alloc] init];
    
        [socket readDataToData:dataF withTimeout:30.0 tag:0];
        NSLog(@"dataF: %d", [dataF length]); //  dataF: 0
    }
    

Кто-нибудь знает, в чем проблема?

Большое спасибо!


person Neil.Lv    schedule 16.01.2012    source источник
comment
Привет, Нил. Вы добились здесь какого-либо прогресса?   -  person Andy A    schedule 13.04.2012
comment
как вы перенесли файл?   -  person Raviraj Jadeja    schedule 24.03.2014
comment
Пожалуйста, дайте мне знать, есть ли прогресс в отправке файлов   -  person Raviraj Jadeja    schedule 24.03.2014
comment
Нил, вас вызвали к didSucceed? Если да, то, пожалуйста, дайте мне знать, как вы это сделали. Заранее спасибо.   -  person Karun    schedule 25.03.2014


Ответы (1)


Чтобы установить внешний IP-адрес, вам нужно использовать xmpp.proxy.externalip, а не xmpp.externalip.

person Andy A    schedule 12.06.2012