Pergunta

Estou usando o AsyncSocket para mover algumas interpalinhas de um dispositivo para outro.

Essencialmente, em um dispositivo que tenho:

NSMutableData *data = UIImageJPEGRepresentation(image, 0.1);

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

Portanto, uma nova imagem será adicionada ao soquete de vez em quando (como uma webcam).

Então, no outro dispositivo, estou chamando:

[listenSocket readDataWithTimeout:1 tag:0];

que responderá com:

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

Essencialmente, o que eu quero poder fazer é ter um NSTIMER que vai ligar para @selector (pullimages):

-(void) PullImages {

Aqui, eu quero poder tirar imagens de RespoData. Como faço isso? Pode não haver uma imagem completa ainda, pode haver várias imagens, pode haver uma e meia imagens!

Eu quero analisar o nsdata em cada imagem existente!

}

Alguma assistência? Desde já, obrigado!

Foi útil?

Solução

Você precisa implementar seu próprio protocolo de wrapper em torno das imagens. Isso pode ser tão simples quanto enviar o comprimento dos dados da imagem antes dos dados reais da imagem. Ao receber dados, agora você sabe quantos bytes você precisa extrair antes de ter uma imagem completa. Como cada imagem é dividida do fluxo, você tem o comprimento da próxima imagem.

Como você está enviando de um iPhone para outro, não precisa se preocupar com a Endianess e pode usar apenas um INT de 32 bits em cada extremidade para o tamanho.

Outras dicas

Basta usar um delimitador para identificar separadamente as diferentes imagens. Quando você pega o delimitador, você sabe que a outra imagem vem a seguir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top