Herstellen und senden von Daten über NSNetService
Ich versuche mit UDP eine Kommunikation zwischen einem iPhone-app und eine Mac app mit NSNetService.
Habe ich so weit gekommen, wie zu setup-die Mac-app zu veröffentlichen NSNetService, dass die iPhone-app entdecken können, aber ich kann nicht herausfinden, wie das senden von Daten zwischen Ihnen.
In meinem Mac app Veröffentliche ich meinen NSNetService mit:
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!");
}
Sieht alles gut aus und die delegate-Methode - (void)netServiceDidPublish:(NSNetService *)sender
(in der Mac-app) ausgelöst wird.
In der iPhone app mache ich eine Instanz von NSNetServiceBrowser
und nach ein oder zwei Sekunden löst die didFindService
delegate-Methode.
- (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];
}
}
Und direkt nach diesem er stößt die nächste delegate-Methode - (void)netServiceDidResolveAddress:(NSNetService *)sender
.
Hier ich weiß nicht, ob es verbunden ist, nicht, finde keine Methode connect och Status Verbindung auf sender
.
So, ich versucht, schreiben auf den Ausgabe-stream mit:
[self.connectedService getInputStream:&istream outputStream:&ostream];
NSString *test = @"test";
NSData *data = [test dataUsingEncoding:NSUTF8StringEncoding];
[ostream write:[data bytes] maxLength:[data length]];
Und auch die Aktualisierung der TXTRecordData mit [sender setTXTRecordData:data];
. Ich bekomme keine Fehler und nichts passiert in meinem Mac-App. Die Mac app hat die delegate-Methode - (void)netService:(NSNetService *)sender didUpdateTXTRecordData:(NSData *)data
.
Ich weiß nicht, wie es weitergehen soll. Ich denke, ich bin etwas fehlt, aber ich weiß nicht, ob es in der Mac-app oder iPhone app. Ich nehme an, dass ich zum ersten mal anschließen müssen, um irgendwie aus der iPhone-app, um die app für den Mac, und die Mac-app etwas hinzufügen, das hört sich ja eine Verbindung.
- Heyho, hast du eine Lösung für dieses? Ich habe ein ähnliches Problem und wäre wirklich daran interessiert zu hören, was Sie getan haben.. Cheers
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht alles glauben, was apple behauptet,
Gibt es eine Menge Probleme mit der Einrichtung des streams mit der
NSNetworkService
.Es wird funktionieren, wenn Sie Folgendes tun:
Zunächst einen port zu veröffentlichen, die das Netzwerk auf. NICHT WÄHLEN SIE EINEN PORT SELBST.
Dann können Sie das port für die Veröffentlichung im Netzwerk.
Holen Sie sich die client-streams mit:
Den Fehler viele Programmierer machen, ist die Veröffentlichung einer Netzwerk durch auswählen einer port-sich selbst und dann das öffnen des streams mit
Die streams werden nicht geöffnet....
Fazit:
veröffentlichen Sie zunächst eine einen port und dann so etwas wie:
dann suchen Sie nach services und fügen Sie Sie
öffnen-streams auf die gewünschten Dienste aus, die Sie durchsuchen mit
Vielleicht müssen Sie öffnen Sie die Ausgabe-stream zuerst?