Je travaille avec des sockets et essaye d'écrire simplement une chaîne dans le socket. J'ai trouvé quelques exemples sur la façon de le faire, comme dans l'exemple suivant (oStream est un NSOutputStream
). Tout cela est dans le NSStreamEventHasSpaceAvailable
.Mettre NSString dans le tampon uint8_t
uint8_t buffer[11] = "I send this";
int len;
len = [oStream write:buffer maxLength:sizeof(buffer)];
Cela fonctionne très bien. J'ai donc essayé de le modifier pour le rendre personnalisable en obtenant les octets d'un 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)];
Ceci ne fonctionne pas du tout. Il écrit le charabia complet dans le tampon (probablement les octets) et j'obtiens un avertissement pour la ligne getBytes de "passer l'argument 5 de getBytes fait l'entier du pointeur sans un cast."
Désolé si cela a été demandé auparavant, n'a pas pu trouver une réponse de la recherche et il semblait que le problème devrait être très simple à résoudre. Merci!
EDIT: J'ai trouvé quelque chose qui semble fonctionner, mais je ne suis pas sûr que ce soit une bonne programmation de quelque chose comme ça. S'il vous plaît voir la réponse ci-dessous. Est-ce un code dangereux à utiliser dans cette situation?
L'argument 5 concerne la façon dont 'options' devrait être un entier (en fait un membre de l'énumération' NSStringEncodingConversionOptions', ou une combinaison de membres de cette énumération) et vous passez NULL, qui se développe en '(void *) 0'. Passez-le à zéro pour fermer l'avertissement. (Cela ne résoudra pas votre problème si.) – zneak
Merci zneak. Cela s'est débarrassé de l'avertissement, mais comme vous l'avez dit n'a pas résolu le problème réel. C'est un pas en avant cependant :) – mjdth