Я создаю клиент сокета iOS для своего iPhone. Мне нужно отправить несколько байтов через tcp/ip. Основная идея заключается в том, что я хочу хранить несколько значений в одном байтовом массиве, чтобы избежать нескольких операций записи в поток. Возьмем такой пример:Байт-массив, содержащий целочисленное и строковое представление
uint8_t buffer[1024]; // buffer to hold all data I'm sending
NSString *command = @"Broadcast"; // the actual message i want to send
int length = [command length]; // length of said message
Теперь, в течение первых 4-х позиций в массиве буфера, я хочу, чтобы поместить переменную длину, и от 4-13, я хочу поставить реальное сообщение. Я знаю, как его декодировать на сервере, но я не могу понять, как получить эти данные в массив буфера, поэтому у меня есть один массив со всеми данными, которые я хочу отправить.
Любая помощь очень ценится!
Кажется, что ваш ответ работает на меня, однако мне трудно понять, что он на самом деле делает. Не могли бы вы серьезно расширить пример, скажем, я хотел бы добавить длину сообщения в конец буфера и добавить сообщение после этого, как бы я это сделал? –
@ cnh1991 Я добавил комментарии к своему коду. Надеюсь, поможет. – iHunter
@ cnh1991 И если вы хотите записать длину в самом конце буфера, следующий код будет идти: '* (uint32_t *) (buffer + 1020) = byteCount'. Он переинтерпретирует «буфер + 1020», например. 1020 символов из начала 'buffer', как указатель на' uint32_t'. – iHunter