2

我正在研究 Apple 的低级文件管理编程主题。在 NSFileHandle 部分,他们说:

NSFileHandle 的范围不限于文件。它提供了唯一可以读取和写入通信通道(例如由套接字、管道和设备实现的通道)的 Foundation 对象。

这听起来很不错!所以我可以通过 NSFileManager 与一个套接字通信,然后将这些数据传输到一个网络服务器,在那里我直接在一个文件中乱七八糟,通过远程?

有人可以举一些容易理解的例子吗?

  • 与“套接字”通信时?
  • 与“管道”通信时?
  • 与“设备”通信时?

注意:我对套接字、管道、设备一无所知。而且我确信设备并不意味着 iPhone 本身。我不熟悉网络的东西。但是我想学那些东西!!也许你也可以简单解释一下这些东西是什么?

4

1 回答 1

7

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

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

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

于 2010-10-23T12:39:46.920 回答