我正在尝试使用 NSNetService 在 iPhone 应用程序和 Mac 应用程序之间建立通信。
我已经设置了 Mac 应用程序以发布 iPhone 应用程序可以发现的 NSNetService,但我不知道如何在它们之间发送数据。
在我的 Mac 应用程序中,我发布了我的 NSNetService:
self.netService = [[NSNetService alloc] initWithDomain:@"" type:@"_sputnik._tcp" name:@"" port:port];
if (self.netService) {
[self.netService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:@"PrivateMyMacServiceMode"];
[self.netService setDelegate:self];
[self.netService publish];
[self.netService startMonitoring];
NSLog(@"SUCCESS!");
} else {
NSLog(@"FAIL!");
}
一切看起来都很好,并且触发了委托方法- (void)netServiceDidPublish:(NSNetService *)sender
(在 Mac 应用程序中)。
在 iPhone 应用程序中,我创建了一个实例,NSNetServiceBrowser
一两秒后它触发了didFindService
委托方法。
- (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing {
TRACE;
NSLog(@"moreComing: %d", moreComing);
self.connectedService = aNetService;
if (!moreComing) {
self.connectedService.delegate = self;
[self.connectedService resolveWithTimeout:30];
}
}
紧接着它触发下一个委托方法- (void)netServiceDidResolveAddress:(NSNetService *)sender
。
这里不知道是connected还是not,can't find any connect method och connect state on sender
.
所以我尝试使用以下命令写入输出流:
[self.connectedService getInputStream:&istream outputStream:&ostream];
NSString *test = @"test";
NSData *data = [test dataUsingEncoding:NSUTF8StringEncoding];
[ostream write:[data bytes] maxLength:[data length]];
并且还用 . 更新 TXTRecordData [sender setTXTRecordData:data];
。我没有收到任何错误,我的 Mac 应用程序也没有任何反应。Mac 应用程序具有委托方法- (void)netService:(NSNetService *)sender didUpdateTXTRecordData:(NSData *)data
。
我不知道该怎么做。我想我遗漏了一些东西,但我不知道它是在 Mac 应用程序还是 iPhone 应用程序中。我想我首先需要以某种方式从 iPhone 应用程序连接到 Mac 应用程序,然后在 Mac 应用程序中添加一些监听连接的东西。