Flash to Max via Java

Mar 23, 2006 at 1:23pm

Flash to Max via Java

Hi list,

I wondered if someone ever linked Java (mxj) to Flash, I tried real
hard to establish some kind of communication but my Java knowledge is
lacking a bit. I already know about Olaf Matthes’ flashserver object
but I really want to be able to connect from within mxj.

I’ll post the Java code and Flash ActionScript code right in this
mail as well as a link to a zip file containing the Max patch, Java
files and the *.fla file ( http://student-kmt.hku.nl/~leo/-/flash-
java/ ).

The problem :

- connection to Flash is succesfull (using ServerSocket.accept(); )

- sending data to Flash doesn’t work yet (using : output = new
PrintStream(client.getOutputStream()); ) but throws no exception

- receiving data from Flash doesnt work either. Tried using
input.readLine() but that one seems to be depricated and I can’t find
its alternative. But : calling the recive function in java and
sending something from Flash causes nothing to happen untill I close
the swf, now my message appears in Java ??? why is that.

Thanks a lot,

leo@nr37.nl
http://www.nr37.nl

Java code :

// code by leo@nr37.nl

import com.cycling74.max.*;
import java.io.*;
import java.net.*;

public class flash extends MaxObject
{
ServerSocket server;
Socket client;

PrintStream output;
DataInputStream input;
String inputtext;

public flash(Atom[] args)
{
declareInlets(new int[]{DataTypes.ALL});
declareOutlets(new int[]{DataTypes.ALL});
}

public void create(int port) {
try {
server = new ServerSocket(port);
try {
client = server.accept();
post(“mxj flash : Connected”);
} catch(IOException e){
post(e.getMessage());
}
} catch(IOException e){
post(e.getMessage());
}
}

public void send(String message) {
try {
output = new PrintStream(client.getOutputStream());
output.println(message);
} catch (IOException e) {
post(e.getMessage());
}
}

public void receive() {
try {
input = new DataInputStream(client.getInputStream());
inputtext = input.readLine();
} catch (IOException e) {
post(e.getMessage());
}
if(inputtext != null) {
post(“input = “+inputtext);
}

}

public void close() {
try{
client.close();
server.close();
post(“mxj flash : Connection lost…”);
}catch(Exception e) {
post(e.getMessage());
}
}
}

Flash code :

// code by leo@nr37.nl

maxServer = new XMLSocket();
maxServer.connect(“127.0.0.1″,7474);

maxServer.onConnect = connectHandler;
maxServer.onClose = closeHandler;
maxServer.onData = dataHandler;

function connectHandler(success) {
if (success) {
trace(“connected”);
} else {
trace(“connection failed”);
}
}

function closeHandler() {
trace(“connection lost…”);
}

function dataHandler(maxdata) {
trace(maxdata);
}

function sendData(flashdata) {
maxserver.send(flashdata);
}

#25094
Mar 23, 2006 at 5:23pm

you should check out Ben Chun’s Flosc utility–

http://www.benchun.com/flosc/

#73472

You must be logged in to reply to this topic.