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

Pro*_*ber 2 iphone nsfilehandle ipad

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

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

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

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

  • 与"插座"通信时?
  • 与"管道"通信时?
  • 与"设备"通信时?

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

Mic*_*hal 7

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

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

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