Как использовать язык C в Xcode для работы с сетевым пакетом - PullRequest
2 голосов
/ 15 ноября 2011

Я только что получил WIFI камеру. Мне нужно разработать приложение для iPad, чтобы отправить URL-адрес этой камере, а затем воспроизвести потоковую передачу mpeg4 на iPad.

После получения запроса эта камера отправляет обратно сетевые пакеты на iPad. В начале каждого пакета он содержит 8 битов без знака, который указывает тип этого пакета, например, видео или аудио.

Поскольку NSData имеет 16-битный формат, как я могу получить первый 8-битный беззнаковый символ и распознать тип этого пакета?

Я думаю, что я не на том пути. Я должен сосредоточиться на уровне пакетов и узнать, как использовать язык C для работы с сетевым пакетом. Тем не менее, я не очень хорошо знаю язык Си. Может ли кто-нибудь сказать мне, как использовать C для управления сетевым пакетом.

1 Ответ

1 голос
/ 16 ноября 2011

Если вы используете объект NSData, вы можете использовать метод bytes для получения указателя на содержимое NSData.

Этот метод возвращает указатель void.Вы можете назначить его как угодно.

Например:

unsigned char * x = [ myDataObject bytes ];

Позволит вам читать байт содержимого NSData на байт (8 бит), так как вы получили char указатель.

x[ 0 ] будет первым байтом, x[ 1 ] вторым и т. д.

Если вы используете другой тип, вы получите другие результаты.Например:

unsigned short int * x = [ myDataObject bytes ];

Если на вашей платформе unsigned short int равен 16 битам (они могут отличаться), вы получите доступ к содержимому NSData на 16 бит.

Например, x[ 0 ] будут первые 16 бит и т. д. ...

То же самое относится и к арифметике указателей.

...