xmpp サーバーとして openfire を使用し、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
ローカル環境でファイル転送をテストしました。1 人のユーザーは Simulator (送信側) でログインし、もう 1 人のユーザーは Device (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; }
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];
didSucceed が両方 (送信側と受信側) に呼び出されました
- (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]; }
OR: ここでデータを受信しましたか? (受信機)
- (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 }
誰が何が問題なのか知っていますか?
どうもありがとう!