使用 Mavericks[NSSocketPortNameServer portForName:host:]
现在需要大约 5 秒来解析 localhost。它过去要快得多,大约 0.01 秒。
我的代码与Apple 的 Introduction to Distributed Objects中的代码相同。
我曾经能够在不到 0.1 秒的时间内启动一个子进程并连接到它。 我的文件管理器运行多个子进程,因此目前在 Mavericks 上已失效。该应用程序没有沙盒化。
我不明白为什么[NSSocketPortNameServer portForName:host:]
需要这么长时间。也许我做错了什么。
任何建议非常感谢?
服务器代码
运行大约需要 0.1 秒。
NSSocketPort* port = [[NSSocketPort alloc] init];
NSConnection* connection = [NSConnection connectionWithReceivePort:port sendPort:nil];
[[NSSocketPortNameServer sharedInstance] registerPort:port name:@"doug"];
连接到服务器的客户端代码
这在小牛队需要 5 秒。
这在 Mountain Lion 和 Lion 上需要大约 0.1 秒。
NSPort* port = [[NSSocketPortNameServer sharedInstance] portForName:@"doug" host:@"*"];
NSConnection* connection = [NSConnection connectionWithReceivePort:nil sendPort:port];
我也试过用nil
,像这样[[NSSocketPortNameServer sharedInstance] portForName:name host:nil]
。它没有任何区别。
如果我使连接无效并尝试再次连接,那么[[NSSocketPortNameServer sharedInstance] portForName:name host:nil]
也需要 5 秒。
这可能是什么原因造成的
当我使用 转储 DNS 配置时scutil --dns
,我看到本地域有 5 秒超时。我怀疑这个超时时间在小牛队之前被设置为 0 秒。我不能要求所有用户都重置这个超时,所以我会继续调查在 Mavericks 上应该做些什么来避免这个超时。