|
SocketListener |
|
package ij; import ij.*; import ij.io.*; import java.io.*; import java.net.*; /** Runs commands sent to the port returned by ImageJ.getPort(). <pre> Commands: open path (opens a file) macro path (runs a macro file) run command-name (runs an ImageJ menu command) eval macro (evaluates a macro) user.dir path (sets the current directory) </pre> */ public class SocketListener implements Runnable { public SocketListener() { Thread thread = new Thread(this, "SocketListener"); thread.start(); } public void run() { ServerSocket serverSocket = null; BufferedReader is; Socket clientSocket; try { serverSocket = new ServerSocket(ImageJ.getPort()); while (true) { clientSocket = serverSocket.accept(); try { if (IJ.debugMode) IJ.log("SocketServer: waiting on port "+ImageJ.getPort()); is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String cmd = is.readLine(); if (IJ. debugMode) IJ.log("SocketServer: command: \""+ cmd+"\""); if (cmd.startsWith("open ")) (new Opener()).openAndAddToRecent(cmd.substring(5)); else if (cmd.startsWith("macro ")) { String name = cmd.substring(6); String name2 = name; String arg = null; if (name2.endsWith(")")) { int index = name2.lastIndexOf("("); if (index>0) { name = name2.substring(0, index); arg = name2.substring(index+1, name2.length()-1); } } IJ.runMacroFile(name, arg); } else if (cmd.startsWith("run ")) IJ.run(cmd.substring(4)); else if (cmd.startsWith("eval ")) { String rtn = IJ.runMacro(cmd.substring(5)); if (rtn!=null) System.out.print(rtn); } else if (cmd.startsWith("user.dir ")) OpenDialog.setDefaultDirectory(cmd.substring(9)); } catch (Throwable e) {} clientSocket.close(); if (IJ. debugMode) IJ.log("SocketServer: connection closed"); } } catch (IOException e) {} } }
|
SocketListener |
|