Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 一种从Bonjour搜索结果中排除self的方法_Ios_Cocoa Touch_Bonjour - Fatal编程技术网

Ios 一种从Bonjour搜索结果中排除self的方法

Ios 一种从Bonjour搜索结果中排除self的方法,ios,cocoa-touch,bonjour,Ios,Cocoa Touch,Bonjour,当同一个应用程序同时充当支持Bonjour的服务和客户端时,在监听套接字的同时浏览类似于self的服务,有什么好方法可以将self从服务搜索结果中排除?在服务器部分,当我向Bonjour注册我的服务时,我会生成一个10个字符的随机字母数字字符串-一个cookie。我将其作为广告服务名称的一部分,如调用[NSNetService initWithDomain:type:name:port://代码>中所述。由此产生的名称类似于“Joe的iPhone上的MyApp\txYbG56HjaE”。制表符前

当同一个应用程序同时充当支持Bonjour的服务和客户端时,在监听套接字的同时浏览类似于self的服务,有什么好方法可以将self从服务搜索结果中排除?

在服务器部分,当我向Bonjour注册我的服务时,我会生成一个10个字符的随机字母数字字符串-一个cookie。我将其作为广告服务名称的一部分,如调用
[NSNetService initWithDomain:type:name:port://代码>中所述。由此产生的名称类似于“Joe的iPhone上的MyApp\txYbG56HjaE”。制表符前面的部分用于显示,后面的部分是cookie。然后,我将cookie存储为全局可见变量。由于服务器初始化发生在应用程序启动时,所以cookie值在早期可用

在服务发现部分,当我找到一个服务时,我检查它的名称;如果cookie与存储的全局cookie相同,我将跳过此服务。其思想是,由于随机性,程序的其他运行实例将具有不同的cookie值


当然,在UI中显示查找到的服务名称时,我会跳过制表符后面的部分。

在您的NSNetServiceBrowserDelegate中,您只需询问传入服务是否与您发布的服务相同:

-(void)netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser didFindService:(NSNetService *)netService moreComing:(BOOL)moreComing
{
    if ([netService isEqual:self.publishedNetService])
        return;
    …
}

你解决过这个问题吗?如果是这样的话,你能回答你自己的问题吗?已解决。看看答案吧。从技术上讲,这不是一个杂烩。只是一个随机字符串,如ASP中的会话ID。这似乎是一个黑客攻击。请仔细考虑我的答案,我已经尝试过了,用它,并通过查看拆卸来确认它。CFNetServiceRef正在按预期实现正确的isEqual函数。不过,我在文档中没有找到任何关于它的信息。