1

我正在创建一个使用 NSNetService 发布服务器的应用程序,并且我遇到了NSNetServiceListenForConnections可以在 OS X 10.9 中使用该publishWithOptions:方法的选项。这个新选项在Apple 提供的“ OS X 10.9 中的新增功能”页面中突出显示。但是,它指出If you send the NSNetServiceListenForConnections option flag in the options value passed to publishWithOptions:, OS X automatically handles all of the connection management for you,我看不出这是一种新行为吗?我目前只是调用该publish方法并等待ServerAcceptCallBack由该CFSocketCreate方法设置的 。我似乎没有让这更容易?

我正在关注CocoaEcho 示例中的一些 Apple 代码,它获取一个端口并打开一个CFSocket. 我知道你可以0作为方法的port参数传递initWithDomain: name: port:,但它选择了一个“随机”端口,我猜这不是 100% 安全的事情。我认为这NSNetServiceListenForConnections可能与此有关,但根据描述,它没有。

所以对于我的实际问题,毕竟漫无边际:

NSNetServiceListenForConnections选项实际上了什么,以及(为什么)我应该使用它?

附带问题:如果我应该使用它,我如何检查可用性?我被告知要使用,if (&NSNetServiceListenForConnections != NULL)但是我无法获得地址(通过)NSNetServiceListenForConnectionsNSUInteger&

4

1 回答 1

1

使用此选项,您根本不必打开或管理套接字(即无需调用 CFSocketCreate)。它为您创建套接字。虽然我在 10.9.2 中发现,如果您在 netService 上调用 stop,它并没有正确关闭套接字,但我仍在调查。(它似乎确实在 10.9.0 和 10.9.1 中关闭了它们)。在您退出应用程序之前,套接字似乎保持打开状态。

于 2014-03-07T21:55:23.913 回答