Flash to Max via Java


    Mar 23 2006 | 1:23 pm
    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
    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);
    }