/* * * Copyright (C) Andrew Smith 2012-2013 * * Usage: java API command ip port * * If any are missing or blank they use the defaults: * * command = 'summary' * ip = '127.0.0.1' * port = '4028' * */ import java.net.*; import java.io.*; class API { static private final int MAXRECEIVESIZE = 65535; static private Socket socket = null; private void closeAll() throws Exception { if (socket != null) { socket.close(); socket = null; } } public void display(String result) throws Exception { String value; String name; String[] sections = result.split("\\|", 0); for (int i = 0; i < sections.length; i++) { if (sections[i].trim().length() > 0) { String[] data = sections[i].split(",", 0); for (int j = 0; j < data.length; j++) { String[] nameval = data[j].split("=", 2); if (j == 0) { if (nameval.length > 1 && Character.isDigit(nameval[1].charAt(0))) name = nameval[0] + nameval[1]; else name = nameval[0]; System.out.println("[" + name + "] =>"); System.out.println("("); } if (nameval.length > 1) { name = nameval[0]; value = nameval[1]; } else { name = "" + j; value = nameval[0]; } System.out.println(" ["+name+"] => "+value); } System.out.println(")"); } } } public void process(String cmd, InetAddress ip, int port) throws Exception { StringBuffer sb = new StringBuffer(); char buf[] = new char[MAXRECEIVESIZE]; int len = 0; System.out.println("Attempting to send '"+cmd+"' to "+ip.getHostAddress()+":"+port); try { socket = new Socket(ip, port); PrintStream ps = new PrintStream(socket.getOutputStream()); ps.print(cmd.toLowerCase().toCharArray()); ps.flush(); InputStreamReader isr = new InputStreamReader(socket.getInputStream()); while (0x80085 > 0) { len = isr.read(buf, 0, MAXRECEIVESIZE); if (len < 1) break; sb.append(buf, 0, len); if (buf[len-1] == '\0') break; } closeAll(); } catch (IOException ioe) { System.err.println(ioe.toString()); closeAll(); return; } String result = sb.toString(); System.out.println("Answer='"+result+"'"); display(result); } public API(String command, String _ip, String _port) throws Exception { InetAddress ip; int port; try { ip = InetAddress.getByName(_ip); } catch (UnknownHostException uhe) { System.err.println("Unknown host " + _ip + ": " + uhe); return; } try { port = Integer.parseInt(_port); } catch (NumberFormatException nfe) { System.err.println("Invalid port " + _port + ": " + nfe); return; } process(command, ip, port); } public static void main(String[] params) throws Exception { String command = "summary"; String ip = "127.0.0.1"; String port = "4028"; if (params.length > 0 && params[0].trim().length() > 0) command = params[0].trim(); if (params.length > 1 && params[1].trim().length() > 0) ip = params[1].trim(); if (params.length > 2 && params[2].trim().length() > 0) port = params[2].trim(); new API(command, ip, port); } }