sockets air processing serversocket osc

sockets - La aplicación de escritorio Adobe AIR se comunica con la aplicación de procesamiento



processing serversocket (1)

Tengo una aplicación de procesamiento que debe hablar con una aplicación de escritorio de Adobe AIR. ¿Alguien puede sugerir las mejores opciones teniendo en cuenta lo siguiente?

Si los sockets son la respuesta, ¿qué tipo de Socket, UDP (Datagram Class), ServerSocket o simplemente Socket?

- Ambas aplicaciones residen en la misma máquina
-latencia importante, más pequeña mejor
-las señales que se envían son pequeñas, que consta de 3 valores

-la comunicación es de 1 vía solamente, procesando TO Adobe AIR


En el lado de Procesamiento puedes usar 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); }

En AIR usarías un DatagramSocket de hecho. Afortunadamente puede usar algo que con paquetes OSC como UDPConnector de TUIO AS3 . Aquí hay una muestra básica de 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]); } } }

Esto es más o menos lo que utilicé para algunos de estos proyectos :