TCP输出流错误

时间:2012-07-20 18:57:39

标签: ios cocoa tcp stream outputstream

我遇到了tcp outputstream(json)的麻烦。碰巧服务器接收我的流分为两部分。但它必须只有一个。

这是我发送流的代码:

- (void) sendMessage:(NSDictionary *)message {
    [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    NSDictionary *dic=[[NSDictionary alloc]initWithObjectsAndKeys:@"52731255-7b3d-5027-9937-ca311e61c14e",@"token",@"add",@"action",message,@"data",@"contact",@"element", nil];
    NSLog(@"send message: %@",dic);
    NSError *writeError = nil;
    [NSJSONSerialization writeJSONObject:dic toStream:outputStream options:0 error:&writeError];
}

但这就是服务器收到的内容:

Incoming data:"{"
Incoming data:"\"action\":\"add\",\"data\":{\"lastName\":\"Guilherme\",\"firstName\":\"Fabio\",\"entryId\":3,\"webLink\":\"www.test.com\"},\"element\":\"contact\",\"token\":\"s3e4-7b3d-fasd-afds-fadsfdsa123\"}"

在某些情况下会发生这种情况,但在另一种情况下,传入数据会变成一个整体。

1 个答案:

答案 0 :(得分:0)

我们发现修复此问题的方法是在流消息的末尾发送符号。像“/ r / n”一样,服务器在看到它时会关闭它。所以它一次只处理一条消息。