0

我正在使用 Xcode 4.4.1 为 iPad2 编写 iOS 5.1.1 应用程序。我希望能够找到在 Java 上运行的本地 http 服务器。

一旦我能够连接到 http 服务器,我只需要与它通信的 url 包括端口。

我的问题:

1) 我应该使用 Bonjour 还是运行在 http 服务器上的 DNS 服务器来发现 http 服务器本身?

2)一旦我发现它,我需要使用名称和密码验证 iPad2 用户才能使用 http 服务器。

我需要一些帮助来了解如何完成这两个步骤,包括源代码(如果适用于 iOS 5 和 Xcode 4.4.1)。

4

1 回答 1

1

1) Bonjour 很容易与 Java 应用程序配合使用。如果你特别自虐,你可以编写自己的基于 Java 的 mDNS (Bonjour) 响应程序(我已经做到了,这不是火箭科学),但最快的方法是在你的 http 服务器中使用jMDNS来宣传它存在。我不会复制和粘贴代码示例,但它们对于大多数应用程序来说已经足够了。

在 iOS 端,NSNetService是你的朋友。从根本上说,它涉及在后台启动响应程序以查找服务(即您的 Java 应用程序),然后在出现/消失时调用委托:

id delegateObject; // Assume this exists.
NSNetServiceBrowser *serviceBrowser;

serviceBrowser = [[NSNetServiceBrowser alloc] init];
[serviceBrowser setDelegate:delegateObject];
[serviceBrowser searchForServicesOfType:@"_http._tcp" inDomain:@""];

有一个指南可以解释这一切。该协议已经 10 多年没有改变,您指望所有支持它的现代 iOS/OS X 版本。jMDNS 库在这个阶段也经过了很好的实战测试。

如果您不希望搜索 的其他应用程序可以看到它,您可以考虑创建自己的服务类型_http._tcp.,尽管这只是一个装饰性的东西。

2) 最简单的方法是 HTTP 基本身份验证;您没有说明您的应用程序支持哪种身份验证或如何在客户端发出 HTTP 请求,但这已经很好涵盖了。

于 2012-09-26T01:30:57.947 回答