什么是插座,管道和设备?

时间:2010-10-23 11:36:02

标签: iphone ipad nsfilehandle

我正在研究Apple的Low-Level File Management Programming Topics。在NSFileHandle部分,他们说:

  

NSFileHandle的范围不是   仅限于文件。它提供了唯一的   可读取和的基础对象   写信给通信频道   作为那些由套接字实现的,   管道和设备。

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

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

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

注意:我对套接字,管道,设备一无所知。我相信它们并不代表iPhone本身。我不熟悉网络事物。但我想学习那些东西!!也许你也可以简单解释这些东西是什么?

1 个答案:

答案 0 :(得分:7)

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

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

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