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

发布于 2024-12-15 21:28:00 字数 294 浏览 3 评论 0原文

我刚买了一个WIFI摄像头。我需要开发一个 iPad 应用程序来向该相机发送 url 请求,然后在 iPad 中播放 mpeg4 流。

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

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

我认为我走错了路。我应该关注数据包层,了解如何使用C语言来处理网络数据包。不过,我现在C语言不太好。谁能告诉我如何使用C来控制网络数据包。

I just obtained a WIFI camera. I need to develop a iPad application to send a url request to this camera and then play the mpeg4 streaming in the iPad.

After receiving the request, this camera send back network packets to iPad. At the beginning of each packet, it contain 8 bit of unsigned char which indicated the type of this packet, such as video or audio.

Since the NSData is in 16bit format, how can i obtain the first 8bit unsigned char and recognized the type of this packet?

I think i am in the wrong track. I should focus on packet layer and find out how to use C language to deal with network packet. However, i am not good in the C language now. Can any one tell me how to using C to control network packet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假装爱人 2024-12-22 21:28:00

如果您使用的是 NSData 对象,则可以使用 bytes 方法来检索指向 NSData 内容的指针。

此方法返回一个 void 指针。您可以将其分配给您想要的任何内容。

例如:

unsigned char * x = [ myDataObject bytes ];

将允许您逐字节(8 位)读取 NSData 内容,因为您有一个 char 指针。

x[ 0 ] 将是第一个字节,x[ 1 ] 将是第二个字节,依此类推。

如果您使用其他类型,您将得到不同的结果。例如:

unsigned short int * x = [ myDataObject bytes ];

假设您的平台上的无符号短整数是 16 位(可能不同),那么您将按 16 位访问 NSData 内容。

在最后一个例子中,x[ 0 ] 将是前 16 位,依此类推...

指针算术也是如此。

If you are using a NSData object, you can use the bytes method to retrieve a pointer to the NSData contents.

This method returns a void pointer. You can assign it to whatever you want.

For instance:

unsigned char * x = [ myDataObject bytes ];

Will allow you to read the NSData contents byte per byte (8bits), as you've got a char pointer.

x[ 0 ] will be the first byte, x[ 1 ] the second, etc.

If you use another type, you'll get different results. For instance:

unsigned short int * x = [ myDataObject bytes ];

Assuming an unsigned short int is 16 bits on your platform (it might be different), you'll then access the NSData contents by 16bits.

In the last example, x[ 0 ] will be the first 16 bits, etc...

It's also the same with pointer arithmetic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文