Ios XMPPFramework-套筒式can';我没有收到自己发送的数据吗?

Ios XMPPFramework-套筒式can';我没有收到自己发送的数据吗?,ios,xmpp,file-transfer,xmppframework,Ios,Xmpp,File Transfer,Xmppframework,我使用openfire作为xmpp服务器,并希望通过Turnsocket传输文件 openfire(本地)配置: 我在本地环境中测试了文件传输,一个用户通过模拟器(发送器)登录,另一个用户通过设备(iPod、接收器)登录 TURNSocket.m(均已更改),更改代理 + (void)initialize { ... proxyCandidates = [[NSMutableArray alloc] initWithObjects:@"local", nil]; ...

我使用openfire作为xmpp服务器,并希望通过Turnsocket传输文件

openfire(本地)配置:

我在本地环境中测试了文件传输,一个用户通过模拟器(发送器)登录,另一个用户通过设备(iPod、接收器)登录

  • TURNSocket.m(均已更改),更改代理

    + (void)initialize {
        ...
        proxyCandidates = [[NSMutableArray alloc] initWithObjects:@"local", nil];
        ...
    }
    
  • 在发送方和接收方上都进行配置

    - (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;
    }
    
    - (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
    
  • 设置和呼叫旋转插座(发送器)

  • DidSuccess同时调用(发送方和接收方)

    }

  • 发送文件?寄件人

    - (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];
    }
    
    或者:在这里接收数据?(接收人)

  • 有人知道有什么问题吗


    非常感谢

    要设置外部ip地址,需要使用xmpp.proxy.externalip而不是xmpp.externalip

    要设置外部ip地址,需要使用xmpp.proxy.externalip而不是xmpp.externalip。你在这里有什么进展吗?你是如何传输文件的?如果在发送文件方面有任何进展,请告诉我尼尔,有人给你打电话吗?如果是,请告诉我你是怎么做到的。提前谢谢。嗨,尼尔。你在这里有什么进展吗?你是如何传输文件的?如果在发送文件方面有任何进展,请告诉我尼尔,有人给你打电话吗?如果是,请告诉我你是怎么做到的。提前谢谢。
    - (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
    
    - (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
    }