0

我正在使用 ASyncSocket 将一些 UIImages 从一个设备移动到另一个设备。

本质上,在一台设备上我有:

NSMutableData *data = UIImageJPEGRepresentation(image, 0.1);

if(isRunning){
    [sock writeData:data withTimeout:-1 tag:0];
}

因此,每隔一段时间就会将新图像添加到套接字中(例如网络摄像头)。

然后,在另一台设备上,我打电话给:

[listenSocket readDataWithTimeout:1 tag:0];

这将回应:

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
    [responseData appendData:data];
    [listenSocket readDataWithTimeout:1 tag:0];
}

本质上,我想要做的是让 NSTimer 运行,它将调用 @selector(PullImages):

-(void) PullImages {

在这里,我希望能够从 ResponseData 中提取图像。我怎么做?可能还没有完整的图像,可能有多个图像,可能有一个半图像!

我想将 NSData 解析为每个现有图像!

}

有什么帮助吗?提前致谢!

4

2 回答 2

2

您必须围绕图像实现自己的包装协议。这可以像在实际图像数据之前发送图像数据的长度一样简单。接收数据时,您现在知道需要提取多少字节才能获得完整的图像。当每个图像从流中分离出来时,您就有了下一个图像的长度。

由于您是从一部 iPhone 发送到另一部 iPhone,因此您不必担心字节顺序,只需在每一端使用 32 位 int 即可。

于 2010-05-11T20:51:49.893 回答
0

只需使用分隔符来分别识别不同的图像。当您抓住分隔符时,您知道下一个图像是另一个图像。

于 2010-06-27T13:56:18.770 回答