2017-06-08 10 views
0

JSON文字列と(実際の文字列の長さ+実際の文字列の)長さの総数を保持するNSDataを送信する必要があります。最初の10バイトを予約するデータパケットを送信する必要があります文字列の長さとNSDataオブジェクトを送信するときに、文字列クライアントにデータパケットを送信

続い私はまたのようなデータが後に続く最初の10バイトにその長さを送信する必要があります:データ+ JSON文字列の

長= Javaクライアントに送信された総データ。

さらにJavaクライアントは、最初の10バイトを読み取って実際のバイト配列を作成し、さらに移動するようになります。

+0

具体的にしてください。タスクのどの部分に問題がありますか。単一のペイロードへのJSON、comb/iningの長さとペイロードの作成、実際のデータの送信... –

+0

こんにちは、今見てください – Ruby

答えて

1

このブルートフォースの例では、実際のペイロードが続くペイロード長の文字列表現に最初の10文字を使用しています。

NSArray *arrPayload = @[@"Hello", @"world"]; 

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:arrPayload 
                options:0 
                error:nil]; 

NSString *jsonString = [[NSString alloc] initWithData:jsonData 
              encoding:NSUTF8StringEncoding]; 

NSString *comboString = [NSString stringWithFormat:@"%010lu%@", 
          (unsigned long)jsonString.length, jsonString]; 

NSLog(@"%@", comboString); 

NSData* combinedData = [comboString dataUsingEncoding:NSUTF8StringEncoding]; 

結果:

0000000017 [ "こんにちは"、 "世界"]

しかし:これは、あなたがたContentを使用して検討する必要がありますHTTPリクエストとして送信されることになっている場合長さの情報を渡すために長さのヘッダー。

+0

ありがとう!!それはiOSサーバーの終わりで私の問題を解決しました。 – Ruby

+0

問題ありません。 Java側では、おそらく 'java'タグで質問を開くべきです。基本的には、最初に文字列の長さが> = 10であるかどうかを確認する必要があります。そうであれば、最初の10文字は残りの長さを表します。それが大丈夫かどうか、それがJSON解析(周囲の例がたくさんあります)であれば比較してください。 –

関連する問題