iphone - 什么是套接字、管道和设备?

标签 iphone ipad nsfilehandle

我正在研究 Low-Level File Management Programming Topics来自苹果。在 NSFileHandle 部分,他们说:

The scope of NSFileHandle is not limited to files. It provides the only Foundation object that can read and write to communications channels such as those implemented by sockets, pipes, and devices.

听起来很棒!所以我可以通过 NSFileManager 与套接字通信,然后套接字将该数据传输到网络服务器,我可以通过远程方式直接在文件中乱搞?

有人可以举一些易于理解的例子,我可以用它做什么,

  • 与“Socket”通信时?
  • 与“管道”通信时?
  • 与“设备”通信时?

注意:我对套接字、管道、设备一无所知。我确信“设备”并不是指 iPhone 本身。我对网络事物不熟悉。但我想学这些东西!!也许你也可以简短解释一下这些东西是什么?

最佳答案

套接字是用于通过网络进行通信的 Assets 。当应用程序想要进行任何网络通信时,它需要连接到目标主机。为此,使用socket。大多数情况下使用 TCP/IP 网络协议(protocol)。这要求您指定要连接的 IP 地址或主机名,以及所谓的 TCP 端口 - 这是目标主机上运行的服务的唯一标识,例如 80 用于 HTTP。当连接建立时,您以与文件句柄类似的方式使用套接字,您只需向其中写入一些数据或从中读取数据。这就是网络通常的工作方式。

Pipe 是来自 Unix 的工具 - 请记住,Mac 和 iPhone 都是基于 Unix 系统的。它是(有点神秘,但仍然流行)两个进程之间的通信方式。从编程的角度来看,它类似于文件句柄——当两个进程通过管道连接时,它们可以对管道进行写入和读取,以实现彼此之间的通信。

设备是设备的抽象。想象一下您想要直接访问您的硬盘驱动器。在 Unix 系统上完成的方式是打开一些特殊文件,它实际上不是文件,而是作为“设备”在文件系统上创建的。检查 Mac 上的目录“/dev/”,它包含可用的设备。对于硬盘驱动器,您可以找到“/dev/disk0”作为其第一个分区“/dev/disk0s1”。这些“设备”代表内核中加载的设备驱动程序。内核扩展(例如驱动程序)可以提供此类设备来实现与用户空间程序的通信。

关于iphone - 什么是套接字、管道和设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4003770/

相关文章:

iphone - Default.png 在模拟器中工作但在设备中不起作用?

iphone - UILabel 大小适合

iphone - 检测NSString是否包含中文字符

ipad - 在本地网络上测试网站

iphone - 如何停止在 UIWebView 中加载图像?

macos - NSTask 结束后如何读取 readInBackgroundAndNotify 的所有剩余输出?

iphone - 无法在以编程方式创建的窗口中单击 iAd - bannerViewActionShouldBegin 未调用?

ios - 使用 Quartz 2d/CGContext 绘图和缩放的问题

ios - 在应用程序文本记录中持久(不在内存中)的最有效的方法/策略是什么?

iOS - NSFileHandle availableData 仅当应用程序在设备上手动运行时挂起