我正在研究Apple的Low-Level File Management Programming Topics。在NSFileHandle部分,他们说:
NSFileHandle的范围不是 仅限于文件。它提供了唯一的 可读取和的基础对象 写信给通信频道 作为那些由套接字实现的, 管道和设备。
听起来很棒!所以我可以通过NSFileManager与一个套接字进行通信,然后套接字将这些数据传输到一个网络服务器,我可以通过远程直接在文件中乱码?
有人可以提供一些易于理解的例子,我可以用它做什么,
注意:我对套接字,管道,设备一无所知。我相信它们并不代表iPhone本身。我不熟悉网络事物。但我想学习那些东西!!也许你也可以简单解释这些东西是什么?
答案 0 :(得分:7)
Socket是您用于通过网络进行通信的资产。当应用程序想要进行任何网络通信时,它需要连接到目标主机。为此,使用socket
。在大多数情况下,使用TCP / IP网络协议。这要求您指定要连接到的IP地址或主机名,以及所谓的TCP端口 - 这是在目标主机上运行的服务的唯一标识,例如,80用于HTTP。建立连接后,以与文件句柄类似的方式使用套接字,只需将一些数据写入其中,或从中读取即可。这就是网络通常的运作方式。
Pipe是来自Unix的工具 - 请记住,Mac和iPhone都是基于Unix系统的。它是两种过程之间的(一种神秘的,但仍然很流行的)通信方式。从编程的角度来看,它类似于文件句柄 - 当两个进程通过管道连接时,它们可以写入和读入管道以相互通信。
设备是一种设备的抽象。想象一下,您希望直接访问您的硬盘驱动器。它在Unix系统上的运行方式是你打开一些特殊的文件,实际上它不是一个文件,而是在文件系统上作为“设备”创建的。检查Mac上的目录“/ dev /”,它包含可用的设备。对于硬盘驱动器,您可以找到“/ dev / disk0”,它的第一个分区是“/ dev / disk0s1”。这些“设备”表示内核中加载的设备驱动程序。内核扩展(例如驱动程序)可以提供这样的设备以实现与用户空间程序的通信。