123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /*
- *
- * 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);
- }
- }
|