将数据包发送给客户

时间:2017-06-08 08:38:39

标签: ios objective-c client-server gcdasyncsocket

我需要发送NSData,其中包含JSON字符串以及(实际字符串的长度+实际字符串)形式的长度总数。我需要发送一个数据包,保留前10个字节的字符串长度并遵循按字符串

在发送NSData对象时,我还需要在前10个字节中发送其长度,然后发送如下数据:

数据长度+ JSON字符串=发送到Java客户端的总数据。

进一步的java客户端将读取前10个字节,以了解生成字节数组并进一步移动的实际数据长度。

1 个答案:

答案 0 :(得分: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 ["你好""世界"]

但是:如果这应该作为HTTP请求发送,您可能需要考虑使用Content-Length标头来传递长度信息。