Я работаю с сокетами и пытаюсь просто записать строку в сокет. Я нашел пару примеров, как это сделать, например, следующий пример (oStream - это NSOutputStream
). Это все в пределах NSStreamEventHasSpaceAvailable
.
uint8_t buffer[11] = "I send this";
int len;
len = [oStream write:buffer maxLength:sizeof(buffer)];
Это прекрасно работает. Поэтому я попытался изменить его, чтобы сделать его настраиваемым, получая байты из строки 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)];
Это не работает вообще. Он записывает полный бред в буфер (возможно, в байтах), и я получаю предупреждение для строки getBytes «передача аргумента 5 getBytes делает целое число из указателя без приведения.»
Извините, если об этом уже спрашивали, не удалось найти ответ при поиске, и, похоже, проблему нужно решить очень просто. Спасибо!
EDIT:
Я нашел что-то, что, кажется, работает, но я не уверен, что это правильное программирование чего-то подобного. Пожалуйста, смотрите ответ ниже. Этот опасный код использовать в этой ситуации?