Aufbau einer Server/Client-Anwendung in Cocoa
Baute ich ein relativ einfaches Programm, das überwacht einen Ordner, manipuliert Dateien Hinzugefügt werden, und gibt eine einfache Fortschritts-Ansicht von, was Los ist. Die Ordner sahen über eine Subklasse von NSOperation, über das die Daten in einem NSDictionary, um meinen Fortschritt anzeigen, über das NSNotificationCenter.
Nun brauche ich Dinge zu zerbrechen, und führen Sie den überwachten Ordner/Verarbeitung Teil auf meinem server, und erstellen einer client-zu-monitor der Fortschritt von mehreren workstations. Mein problem ist, ich weiß nicht, wie Sie dies bewerkstelligen und meine Suche nicht wirklich helfen mich.
Es scheint, ich bin immer viel veraltete Lösungen (WebObjects, Portable Distributed Objects) oder unvollständige Informationen. Es scheint, wie ich benutzen wollen würde NSStream zum übergeben von Daten hin und her, aber alles, was ich finden NSStream wie es aussieht ist eingerichtet für die client-Seite, weil es auf der Suche für eine IP-Adresse. Was wäre der beste Weg zu gehen über das einrichten der beiden einen server und einen client, um eine Verbindung herzustellen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen, mit TCP für so etwas. Da (nehme ich an), Sie schreiben diese software für BSD (Mac OS X und iPhone sind sowohl BSD), die Sie verwenden können, BSD C-sockets, oder eine Objective-C-wrapper für diese. Eine gute Bibliothek für einen client ist CocoaAsyncSocket. Ich persönlich habe geschrieben, eine leichte Objective-C-socket class für TCP-Netzwerk genannt SocketKit. Die Nutzung dieser Bibliothek ist etwas wie folgt:
Server aus einer Sicht, die Sie hören können, auf einem port mit dem
SKTCPSocketServer
Klasse:Natürlich mit TCP-sockets schreiben Sie Ihre eigenen Netzwerk-Protokoll. Ein einfaches Beispiel wäre das senden einer vier-byte-Längenfeld, gefolgt von den Daten eines NSDictionary oder etwas in der Natur. Damit könnten Sie etwas erreichen ähnlich wie eine sehr grundlegende Verteilte Objekte system.
Warum nicht werfen Sie einen Blick auf Bonjour für zero-configuration networking " (d.h., so dass Sie nicht haben, finden Sie die IP-Adresse Ihres Servers)?
Da Bonjour ist auch auf Windows und iOS (iPhone/iPad) Sie können sogar machen Sie Ihre app multi-Plattform (z.B. der server auf Windows-und Mac-client oder Umgekehrt) oder auch ein iPhone als client von deinem server (weiß nicht, ob dies in Ihrem Falle sinnvoll ist, aber ich bin einfach darauf hindeutet).
Dies ist leider ein Ort, wo der Kakao ist ziemlich schwach. Vergessen Sie WebObjects (Apple). Sollten Sie wahrscheinlich vergessen, über Verteilte Objekte. Es ist nicht wirklich eine integrierte client - /server-Lösung auf dem Mac. iOS hat einige anständige peer-to-peer-Kram, aber es ist immer noch ziemlich nutzlos für client/server.
Meine Empfehlung ist die Verwendung einer einfachen REST-API. Bauen Sie Ihre server mit cocoahttpserver. Bauen Sie Ihr client mit
NSURLConnection
oder ASIHTTPRequest. Halten Sie es einfach. Ich mag JSON für das Protokoll. YAJL hat gut für mich gearbeitet, sondern für etwas wirklich einfach, es gibt eine Menge von Optionen.