我试图为这个项目编写一个绑定项目: https://github.com/tolo/HHServices
Project使用较低级别的C类:dns_sd.h。我不知道如何将其导入我的绑定项目。
我需要绑定的所有类都很好,除了这个:
#import <Foundation/Foundation.h>
#include <dns_sd.h> // Note this!
@interface HHServiceSupport : NSObject {
@private
CFRunLoopRef runLoop;
@protected
DNSServiceRef sdRef;
}
@property (nonatomic, readonly) DNSServiceRef sdRef;
@property (nonatomic, assign) DNSServiceErrorType lastError;
@property (nonatomic, readonly) BOOL hasFailed;
- (void) doDestroy;
- (void) dnsServiceError:(DNSServiceErrorType)error;
- (void) openConnection;
- (void) closeConnection;
@end
我对此的绑定如下:
[BaseType (typeof(NSObject))]
interface HHServiceSupport
{
// @private
// CFRunLoopRef runLoop;
// @protected
// DNSServiceRef sdRef;
//Do I bind the above??!
//@property (nonatomic, readonly) DNSServiceRef sdRef;
[Export("sdRef")]
DNSServiceRef SDRef { get; set; }
//@property (nonatomic, assign) DNSServiceErrorType lastError;
[Export("lastError")]
DNSServiceErrorType LastError { get; set; }
//@property (nonatomic, readonly) BOOL hasFailed;
[Export("hasFailed")]
bool HasFailed { get; set; }
//- (void) doDestroy;
[Export("doDestroy")]
void DoDestroy();
//- (void) dnsServiceError:(DNSServiceErrorType)error;
[Export("dnsServiceError:")]
void DnsServiceError(DNSServiceErrorType error);
//- (void) openConnection;
[Export("openConnection")]
void OpenConnection();
//- (void) closeConnection;
[Export("closeConnection")]
void CloseConnection();
}
因为我不知道如何引用c库dns_sd.h,所以我没有对诸如DNSServiceRef,DNSServiceErrorType等类的引用,所以库不会构建(说这些是未知的)。
我已经在线浏览了所有关于此的文档,但没有找到任何涉及如何引用本机c库的文档。
我能找到的最接近的类似问题是:Referring to DNSSDObjects in dns_sd.h and DNSServiceResolve in MonoTouch没有答案。
非常感谢任何协助。
ps:我的最终目标是启用点对点Bonjour,这样我就可以在设备之间建立TCP套接字连接,而不是使用GameKit,因为那只是一场灾难。
答案 0 :(得分:1)
看看我对Referring to DNSSDObjects in dns_sd.h and DNSServiceResolve in MonoTouch的回答。不确定它是否对你有帮助,因为它只是简单地调用dns_sd。
答案 1 :(得分:0)
虽然它不是我问题的直接答案,但iOS6现在允许您在p2p网络(蓝牙)上发布Bonjour,无需包装我自己的DNSSDObject。
来自Apple的iOS6发行说明:
的Bonjour 默认情况下,NSNetService类和CFNetService API不包含P2P接口。要通过P2P接口浏览,注册或解析服务,应用程序需要使用下面提到的Bonjour DNSService *()API。 在以下API中将interfaceIndex参数设置为kDNSServiceInterfaceIndexAny,默认情况下不包括P2P接口。要包含P2P接口,您现在必须在使用kDNSServiceInterfaceIndexAny时设置kDNSServiceFlagsIncludeP2P标志,或将interfaceIndex设置为kDNSServiceInterfaceIndexP2P。