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

NSFileHandle的范围不限于文件。它提供了唯一的 可以读取和 写入通信渠道,例如 作为由套接字实现的, 管道和设备。

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

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

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

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

有帮助吗?

解决方案

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top