Я размещаю службу в приложении Mac и подключаюсь к приложению iOS.Хотя приложение для iOS найдет службу, служба не содержит никаких адресов, поэтому я не могу подключить сокет.
Это мой код хостинга на Mac:
- (void)start {
queue = dispatch_queue_create("KeyboardServer", DISPATCH_QUEUE_CONCURRENT);
socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:queue];
NSError *error = nil;
if ([socket acceptOnPort:0 error:&error]) {
service = [[NSNetService alloc] initWithDomain:@"local." type:@"_probonjore._tcp." name:@"TestServer" port:[socket localPort]];
service.delegate = self;
[service publish];
} else {
NSLog(@"Unable to create server");
}
}
Это код подключения на iOS:
- (BOOL)connectToServer:(NSNetService *)service {
NSArray *addresses = service.addresses;
socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:queue];
for (NSData *address in addresses) {
NSError *error;
if ([socket connectToAddress:address error:&error]) {
NSLog(@"Socket connected!");
return true;
}
}
return false;
}
Проблема в том, что service.addresses всегда пуст и цикл мгновенно завершается.