2012-03-25 7 views
1

iPadがサーバーで、いくつかのiPhoneがクライアントであるプロフェッショナルなiOSアプリケーションを構築しています。サーバー間でリソースを同期させるために使用するネットワークプロトコル

事実を考慮して: - 通信はTCPを使用するソケット経由でローカルネットワーク上でのみ動作します。 - すべてのデバイスを同期させたい(すべてのデバイスにローカルデータベースがあります) - 同期を維持するためにNEW、UPDATE、DELETEなどのコマンドを送信できるようにしたい - 送信できるようにしたい - いくつかのデータが添付された通知(オーディオファイル) - すべてのこれらのコマンドの優先順位を定義します。

私はプロトコルを定義する必要があると思うので、私の質問は次のとおりです。既に存在していますか?

ありがとうございます!

答えて

1

あなたは、ソケットメッセージを聞くことができ、サーバは、データのURLで簡単な構造体を送信することができ、クライアントにコマンド、その後、彼らは例えば、データを更新することができます。

#define MSG_DOWNLOAD 1 

typedef struct{ 
    uint8_t cmd; 
    uint8_t size; 
} MSGHEADER 

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

ソケットにあなたはCMDとヘッダを取得する場合= 1、あなたのサーバーにURLとNSURLconnetionを送信し、いくつかのデータをダウンロードし、それを同期することができます。

- (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

お返事ありがとうございます!しかしiPadはサーバーであり、すべてのデータを保持しているため、iPhoneとiPad(サーバー)の間には2つの接続があります。つまり、ソケット経由のコマンドは1、HTTPサーバーはiPad(ソケットもあまりにも使用されますか?)。接続数が倍増するので、それは良い方法ですか? – florion

+0

これは何をしたいのですか?1つの構造体内でコマンド+データでTCPソケットのみを使用できますが、画像として大きなファイルを送信したくない場合は、音楽にHTTPサーバーが必要です。ソケットは大きなデータをダウンロードするためのリンクをあなたに送り、あなたは簡単にそれを取得します。しかし、ソケットだけを使用することも可能ですが、バッファの問題について考える必要があります。 – mientus

関連する問題