Mastering openFrameworks_第十一章_网络
网络
网络为多个设备之间的数据交换提供了一种方式。它是一个主要组成部分,允许远程控制移动和平板设备应用程序中的一些参数,也用于使交互式项目在多台计算机上同步工作。在本章中,您将学习如何在openFrameworks项目中实现和使用OSC和TCP协议,具体如下:
网络基础
使用OSC协议
使用TCP协议处理流图像
网络基础
网络包括许多硬件和软件技术,它们提供数字设备之间甚至计算机内部应用程序之间的数据交换。目前最流行的网络模型是tcp/ip(传输控制协议/互联网协议)。它使用有线(LANー局域网)或无线(wlanー无线局域网)连接。所有的现代计算机和移动设备都支持tcp/ip协议。
注意:另一种网络技术是无线ZigBee网络,广泛应用于物理计算项目。只连接两个设备可以被认为是最简单的网络。旧的但仍然流行的有线连接技术是USB、串行端口(RS-232)、RS-485和I2C(用于微设备)。
在本章中,我们将考虑使用tcp/ip连接本地网络中的多个设备。本地网络是由网络路由器构建和控制的。网络路由器是一个特殊的网络节点,它作为一个独立的设备工作,或者集成在你的笔记本电脑中。
网络路由器给每个连接到网络的设备一个唯一标识符地址,称为网络地址。地址具有192.168.0.3这样的格式,或者可以是计算机名,如Mymachine。每个设备都可以使用地址localhost或其等价物127.0.0.1引用自身。查看网络适配器的属性以查找设备的网络地址。您还可以使用Terminal窗口请求网络信息,方法是输入ipconfig命令(用于Windows)或ifconfig命令(用于MacOSx和Linux)。
要测试具有已知地址的两台计算机之间的连接,可以使用ping命令,例如ping 192.168.0.3。如果连接没有建立,它可能被路由器或计算机的防火墙或防病毒软件阻止。在这种情况下,检查它们的设置。
注意:请注意,当重新启动设备和路由器时,网络地址可能会发生变化。因此,对于长期工作的交互式安装,您应该在其网络适配器的设置中修正计算机的地址,或者只使用计算机名称而不是编号地址。
为了将一些数据从一个设备发送到另一个设备,您应该指定目标设备的网络地址,以及端口号,端口号是介于0和65535之间的整数。有些端口是保留的,例如,端口80用于通过浏览器进行HTTP协议交换。在本章的例子中,我们将使用端口12345。
系统服务很少使用大数量(大于10,000)的端口,因此您最有可能使用它们。要查明您的系统中使用了哪些端口,可以使用来自终端的特殊软件或网络命令。对于连接设备,我们经常使用端口12345、12346、12347和12348。
在本章中,我们将学习如何使用以下两个协议来实现数据传输:
OSC:开放声音控制是非常简单和快速的。它适用于快速传输少量信息(例如更改参数和对象坐标的命令)。它是交互式安装和物理计算项目中使用的主要协议。它在所有与vj-相关的软件中都得到了支持。
最初,OSC作为MIDI的网络替代品,MIDI是连接乐器的有线协议。现在,OSC用于控制广泛的应用程序和设备,通常与音乐无关。
Tcp:传输控制协议可以轻松地传输大量数据。这是一个通用的协议。在本章中,我们将看到一个使用它进行图像流的例子。
让我们从OSC协议开始。