我有一个必须与桌面 Adobe AIR 应用程序对话的处理应用程序。考虑到以下几点,有人可以提出最佳选择吗?
如果套接字是答案,哪种类型的 Socket、UDP(数据报类)、ServerSocket 或只是普通的 Socket?
- 两个应用程序都驻留在同一台机器上 -
延迟很重要,越小越好-
发送的信号很小,由 3 个值组成
- 通信只有 1 种方式,处理到 Adobe AIR
我有一个必须与桌面 Adobe AIR 应用程序对话的处理应用程序。考虑到以下几点,有人可以提出最佳选择吗?
如果套接字是答案,哪种类型的 Socket、UDP(数据报类)、ServerSocket 或只是普通的 Socket?
- 两个应用程序都驻留在同一台机器上 -
延迟很重要,越小越好-
发送的信号很小,由 3 个值组成
- 通信只有 1 种方式,处理到 Adobe AIR
在处理方面,您可以使用oscP5:
import oscP5.*;
import netP5.*;
OscP5 osc;
NetAddress where;
void setup() {
frameRate(25);text("click to send\nOSC",5,50);
osc = new OscP5(this,12000);
where = new NetAddress("127.0.0.1",8082);
}
void draw() {}
void mousePressed() {
OscMessage what = new OscMessage("/straps");
what.add(193.4509887695313);
osc.send(what, where);
}
在 AIR 中,您确实会使用DatagramSocket 。幸运的是,您可以使用诸如TUIO AS3 的 UDPConnector 之类的 OSC 数据包。这是一个基本的 as3 示例:
package
{
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
import org.tuio.connectors.UDPConnector;
import org.tuio.osc.*;
public class BasicOSC extends Sprite implements IOSCConnectorListener
{
private var oscSocket:UDPConnector;
private const OSCSERVER:String = "127.0.0.1";
private const PORT:int = 8082;
public function BasicOSC()
{
try{
oscSocket = new UDPConnector(OSCSERVER,PORT);
oscSocket.addListener(this);
trace(this,"OSC ready");
}catch(e:Error){ trace(e.getStackTrace()); }
}
public function acceptOSCPacket(oscPacket:OSCPacket):void{
//handle OSC here
var message:OSCMessage = oscPacket as OSCMessage;
trace("message from :",message.address,"at",new Date());
for(var i:int = 0; i < message.arguments.length; i++)
trace("\targs["+i+"]",message.arguments[i]);
}
}
}
这大致是我用于其中一些项目的内容: