我正在使用CouchbaseListener在CouchbaseLite中进行对等复制。我无法找到同伴。 这是我遵循的代码, 注意:确定所有自我。属性可用
这是我的听众代码
CBLManager *cblManager = [CBLManager sharedInstance];
self.dbListener = [[CBLListener alloc] initWithManager:cblManager port:0];
[self.dbListener setBonjourName:[[UIDevice currentDevice] name]
type:@"_ashok._tcp."];
[self.dbListener setTXTRecordDictionary:[NSDictionary dictionaryWithObject:DBNAME
forKey:@"dataBasePath"]];
NSError *error;
BOOL status = [self.dbListener start:&error];
if (status) {
dblPort = dbListener.port;
} else {
NSLog(@"CBLListener is not started: %@", error.localizedDescription);
}
开始浏览同行
self.serviceBrowser = [[NSNetServiceBrowser alloc] init];
self.serviceBrowser.includesPeerToPeer = YES;
self.serviceBrowser.delegate = self;
[self.serviceBrowser searchForServicesOfType:_ashok._tcp. inDomain:@"local."];
[self.serviceBrowser scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
但我无法找到同伴。 我打开了wifi和放大器两个设备上的蓝牙。两者都没有连接到任何网络。
我测试的情景:
在这两种情况下,我无法找到附近的同伴。
答案 0 :(得分:0)
在抓取了许多论坛之后,我刚刚成功地在iOS上获得了同行2同行的工作。所以我只发布所有帮助我的东西(注意:我称之为主持人的监听器运行“服务器”而另一个称为“客户端”以简化目的)。
首先,打开日志记录。您可以通过在启动时传递的参数上添加“-Log YES”和“-LogSyncVerbose YES”来实现这一点(在编辑方案=>运行MyApp =>参数中)
然后,您需要使用Bonjour使Listener服务成功通告自己。您可以在应用程序商店下载iphone应用程序,该应用程序商店显示本地网络中可用的所有服务,并检查您是否可以看到为服务选择的名称。
然后,在“客户端”端,您必须使用NSNetServiceBrowser来浏览服务,然后在找到服务后使用[NSNetService resolveWithTimeout]方法来解析主机。然后,只有这样才能使用nsnsetservice主机名和端口构建复制。否则,那些将是零。
最后,一旦你设法将你的“客户端”连接到“服务器”,我建议尝试使复制工作没有任何凭据(根本没有“登录/密码”)因为它似乎不正常工作并导致各种网络错误,例如connexion在同步过程中终止(即使在版本1.0.2上)。
希望这有帮助。一个非常有用的线程来帮助您: https://groups.google.com/forum/#!searchin/mobile-couchbase/p2p/mobile-couchbase/oFGn1zybDcE/7BE3vFXh9xoJ
答案 1 :(得分:0)
以下是我制定的解决方案的完整示例: https://gist.github.com/joshblour/5d142659b328e96c102f