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
我在本地环境中测试了文件传输,一个用户通过模拟器(发送者)登录,另一个用户通过设备(iPod、接收者)登录。
TURNSocket.m(均已更改),更改代理
+ (void)初始化 { ... proxyCandidates = [[NSMutableArray alloc] initWithObjects:@"local", nil]; ... }
配置
- (BOOL)xmppStream:(XMPPStream *)发送者 didReceiveIQ:(XMPPIQ *)iq { ... if ([TURNSocket isNewStartTURNRequest:iq]) { NSLog(@"IS NEW TURN 请求接收.. TURNSocket .................."); TURNSocket *turnSocket = [[TURNSocket alloc] initWithStream:xmppStream传入TURNRequest:iq]; [turnSockets addObject:turnSocket]; [turnSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()]; [turnSocket释放]; } 返回是; }
设置并调用 TURNSocket(发送方)
TURNSocket *turnSocket = [[TURNSocket alloc] initWithStream:[self xmppStream] toJID:user.primaryResource.jid]; [turnSockets addObject:turnSocket]; [turnSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()]; [turnSocket释放];
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"]]; [套接字 writeData:dataF withTimeout:60.0f 标签:0]; }
或者:这里收到数据了吗? (接收者)
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket { NSData *dataF = [[NSData alloc] init]; [套接字 readDataToData:dataF withTimeout:30.0 标记:0]; NSLog(@"dataF: %d", [dataF 长度]); // 数据F:0 }
有谁知道问题出在哪里吗?
非常感谢!
I used the openfire as the xmpp server, and want to transfer file via the Turnsocket.
The openfire (local) config:
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
I tested the file transfer in the local environment, one user is logged in by Simulator (Sender), the other user is logged in by Device (iPod, receiver).
TURNSocket.m (both changed), change the proxy
+ (void)initialize { ... proxyCandidates = [[NSMutableArray alloc] initWithObjects:@"local", nil]; ... }
Config both on sender and receiver
- (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; }
Setup and call TURNSocket (Sender)
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 called both (sender and receiver)
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
}
Send a file? on sender
- (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: Received data here? (Receiver)
- (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 }
Does anyone know what's the problem?
Thanks very much!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
设置外部ip地址,需要使用xmpp.proxy.externalip而不是xmpp.externalip
To set an external ip address, you need to use xmpp.proxy.externalip rather than xmpp.externalip