/*
* Copyright (C) 2004-2006, C. Ramakrishnan / Illposed Software.
* All rights reserved.
*
* This code is licensed under the BSD 3-Clause license.
* See file LICENSE (or LICENSE.html) for more information.
*/
package com.illposed.osc;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
* OSCPortOut is the class that sends OSC messages
* to a specific address and port.
*
* To send an OSC message, call send().
*
* An example based on
* {@link com.illposed.osc.OSCPortTest#testMessageWithArgs()}:
* <pre>
OSCPort sender = new OSCPort();
Object args[] = new Object[2];
args[0] = new Integer(3);
args[1] = "hello";
OSCMessage msg = new OSCMessage("/sayhello", args);
try {
sender.send(msg);
} catch (Exception e) {
showError("Couldn't send");
}
* </pre>
*
* @author Chandrasekhar Ramakrishnan
*/
public class OSCPortOut extends OSCPort {
private InetAddress address;
/**
* Create an OSCPort that sends to address:port.
* @param address the UDP address to send to
* @param port the UDP port to send to
*/
public OSCPortOut(InetAddress address, int port)
throws SocketException
{
super(new DatagramSocket(), port);
this.address = address;
}
/**
* Create an OSCPort that sends to address,
* using the standard SuperCollider port.
* @param address the UDP address to send to
*/
public OSCPortOut(InetAddress address) throws SocketException {
this(address, DEFAULT_SC_OSC_PORT);
}
/**
* Create an OSCPort that sends to "localhost",
* on the standard SuperCollider port.
*/
public OSCPortOut() throws UnknownHostException, SocketException {
this(InetAddress.getLocalHost(), DEFAULT_SC_OSC_PORT);
}
public OSCPortOut(int port) throws UnknownHostException, SocketException {
this(InetAddress.getLocalHost(), port);
System.out.println(InetAddress.getLocalHost());
}
/**
* Send an OSC packet (message or bundle) to the receiver we are bound to.
* @param aPacket the bundle or message to send
*/
public void send(OSCPacket aPacket) throws IOException {
byte[] byteArray = aPacket.getByteArray();
DatagramPacket packet =
new DatagramPacket(byteArray, byteArray.length, address, getPort());
getSocket().send(packet);
}
}