如何在Xcode中使用C语言来处理网络数据包

时间:2011-11-15 06:01:53

标签: c ipad streaming nsdata unsigned-char

我刚买了一台WIFI相机。我需要开发一个iPad应用程序来向这个摄像头发送网址请求,然后在iPad上播放mpeg4流媒体。

收到请求后,此摄像机会将网络数据包发送回iPad。在每个数据包的开头,它包含8位无符号字符,表示此数据包的类型,例如视频或音频。

由于NSData是16位格式,我如何获得第一个8位无符号字符并识别该数据包的类型?

我想我走错了路。我应该专注于数据包层,并找出如何使用C语言来处理网络数据包。但是,我现在对C语言并不擅长。任何人都可以告诉我如何使用C来控制网络数据包。

1 个答案:

答案 0 :(得分:1)

如果您使用的是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位(可能不同),那么您将以16位访问NSData内容。

在最后一个例子中,x[ 0 ]将是前16位等等......

指针算法也是如此。