Pergunta

Estou trabalhando com soquetes e tentando simplesmente escrever uma string no soquete. Encontrei alguns exemplos sobre como fazer isso, como o exemplo a seguir (Ostream é um NSOutputStream). Isso tudo está dentro do NSStreamEventHasSpaceAvailable.

uint8_t buffer[11] = "I send this";             
int len;
len = [oStream write:buffer maxLength:sizeof(buffer)];

Isso funciona muito bem. Por isso, tentei modificá -lo para torná -lo personalizável, obtendo os bytes de uma NSString.

int len;
NSString* strId;
strId = @"string will be customized with several lines of code here";

uint8_t buffer[[strId lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];                       
[strId getBytes:buffer maxLength:sizeof(buffer) usedLength:NULL encoding:NSASCIIStringEncoding options:NULL range:NSRangeFromString(strId) remainingRange:NULL];
len = [oStream write:buffer maxLength:sizeof(buffer)];

Isso não está funcionando. Ele escreve sem bobagens completas no buffer (provavelmente os bytes) e estou recebendo um aviso para a linha Getbytes de "Passando o argumento 5 de getbytes faz com que o número inteiro de ponteiro sem elenco".

Desculpe se isso já foi perguntado antes, não conseguiu encontrar uma resposta da pesquisa e parecia que o problema deveria ser muito simples de corrigir. Obrigado!

EDITAR:Encontrei algo que parece funcionar, mas não tenho certeza se é uma programação adequada de algo assim. Por favor, veja a resposta abaixo. Esse código perigoso deve usar nesta situação?

Foi útil?

Solução

Outras dicas

Depois de mais pesquisas, descobri que isso parece funcionar:

len = [oStream write:[[strId dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[strId lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];

Sinto que isso não é muito seguro, pois está usando algumas maneiras diferentes de colocar os dados no NSOutputStream, bem como no comprimento. HÁ AA PROBLEMA DE FAZER ISSO?

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