Какой сетевой протокол использовать для синхронизации ресурсов между сервером и несколькими клиентами - PullRequest
1 голос
/ 25 марта 2012

Я создаю профессиональное приложение для iOS, в котором iPad - это сервер, а несколько iPhone - это клиенты.

Учитывая тот факт, что: - обмен данными осуществляется только в локальной сети через сокеты с использованием TCP.- Я хочу, чтобы все они были синхронизированы (все устройства имеют локальную базу данных) - Я хочу иметь возможность отправлять команды, такие как NEW, UPDATE, DELETE и т. Д., Чтобы держать их в синхронизации - Я хочу иметь возможность отправлять уведомления с некоторымиданные приложены (аудиофайл), - я хочу определить приоритеты для всех этих команд.

Это заставляет меня думать, что необходимо определить протокол, поэтому мой вопрос: существует ли он уже?

Большое спасибо!

1 Ответ

1 голос
/ 25 марта 2012

Вы можете прослушивать сообщения сокетов, сервер может отправлять простые структуры с URL-адресами данных, командами клиентам, и после этого они могут обновлять данные, например:

#define MSG_DOWNLOAD 1

typedef struct{
   uint8_t cmd;
   uint8_t size;
} MSGHEADER

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

и в сокете, если вы получите заголовок с cmd = 1, вы можете отправить NSURLconnetion с URL на ваш сервер, загрузить некоторые данные и синхронизировать их.

- (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.
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...