2012-03-25 9 views
1

Ich baue eine professionelle iOS-Anwendung, bei der ein iPad ein Server ist und mehrere iPhones Clients sind.Welches Netzwerkprotokoll wird verwendet, um Ressourcen zwischen einem Server und mehreren Clients zu synchronisieren

Angesichts der Tatsache, dass: - Kommunikation nur in einem lokalen Netzwerk über Sockets mit TCP. - Ich möchte alle synchron halten (alle Geräte haben eine lokale Datenbank) - Ich möchte Befehle wie NEW, UPDATE, DELETE usw. senden können, um sie synchron zu halten - Ich möchte senden können Benachrichtigungen mit einigen Daten (Audiodatei), - Ich möchte Prioritäten für alle diese Befehle definieren.

Es macht mich denken, dass eine Notwendigkeit, ein Protokoll zu definieren, so meine Frage ist: Gibt es bereits existiert?

Vielen Dank!

Antwort

1

Sie können Socket-Nachrichten abhören, Server einfache Strukturen mit Daten-URL senden können, Befehle an Kunden, und danach können sie Daten zum Beispiel aktualisieren:

#define MSG_DOWNLOAD 1 

typedef struct{ 
    uint8_t cmd; 
    uint8_t size; 
} MSGHEADER 

typdef struct{ 
    MSGHEADER header; 
    char url[255]; 
} MSGDOWNLOAD; 

und in Buchse, wenn Sie erhalten Header mit cmd = 1, können Sie NSURLconnection mit URL an Ihren Server senden und einige Daten herunterladen und synchronisieren.

- (void)recivedDataFromBuffer:(NSData *)data 
{ 

    MSGHEADER *pMsgHdr; 
    pMsgHdr = (MSGHEADER*)[data bytes]; 

    int headerCMD = pMsgHdr->cmd; 

    if (headerCMD == MSG_DOWNLOAD) 
    { 
     MSGDOWNLOAD download = *(MSGDOWNLOAD *)pMsgHdr; 
     download.header = *pMsgHdr; 

     // do sync stuff send url request etc. 
    } 
+0

Vielen Dank für Ihre Antwort! Aber da das iPad der Server ist und alle Daten enthält, bedeutet dies, dass es zwischen einem iPhone und dem iPad (dem Server) 2 Verbindungen gibt: 1 für die Befehle über einen Socket und 1 für den Datenabruf, wie ein HTTP-Server an das iPad (welches Sockets auch richtig nutzt?). Also verdoppelt sich die Anzahl der Verbindungen, ist es eine gute Übung? – florion

+0

Es hängt davon ab, was Sie tun möchten, können Sie nur TCP-Socket mit Befehl + Daten in einer Struktur verwenden, aber, wenn Sie keine großen Dateien als Bilder, Musik senden möchten, sollten Sie HTTP-Server haben. Socket sendet Ihnen einen Link, um einige große Daten herunterzuladen, und Sie werden es leicht wiederfinden. Es ist aber auch möglich, nur Socket zu verwenden, aber Sie haben über Pufferproblem nachgedacht. – mientus

Verwandte Themen