我是客户端服务器编程的新手,所以如果我犯了一些明显的错误,请原谅我。
为了给出一个上下文,我们正在开发一个客户端服务器应用程序,其中客户端通过套接字将json中的图像/视频发送到服务器。
我们也在发送多个数据包中的单个图像/视频文件 - 数据包大小为2kb
这是我的代码
-(void)sendDataToServer:(NSData*)tmpdata
{
NSMutableData *jsonData = [tmpdata mutableCopy];
NSData *nsdata = [@"\r\n" dataUsingEncoding:NSUTF8StringEncoding];
[jsonData appendData:nsdata];
uint32_t some_long = (uint32_t)[jsonData length];
uint32_t network_byte_order;
//convert and send
network_byte_order = htonl(some_long);
NSUInteger len = [jsonData length];
int litIndianSize;
[[NSData dataWithBytes:&len length:4] getBytes:&litIndianSize length: sizeof(litIndianSize)];
NSLog(@"actaul data of 4 byte=%i",litIndianSize);
NSData *data2 = [NSData dataWithBytes: &network_byte_order length:sizeof(network_byte_order)];
NSMutableData *completeData = [data2 mutableCopy];
[completeData appendData:jsonData];
if([outputStream write:[completeData bytes] maxLength:[completeData length]]==-1)
{
NSLog(@"error in writing on stream");
}
}
但是这段代码正在给出"解析错误"在服务器上。以下是我认为正在发生的事情。
由于客户端正在非常快速地将这些数据包发送到服务器,因此有时输出流不会正确刷新。这导致多个数据包合并到一个数据包中,服务器无法将其解析为一个json数据包。
您能告诉我我的代码是否有问题,或者是否有其他方法可以正确刷新输出流?
此外,Android客户端能够使用相同的原则(数据包大小为2 KB等)成功地将图像/视频发送到服务器。 (如果需要,我也可以在这里发布Android代码)