package javademo.jni; import java.io.*; import java.net.*; public class SimpleServer { public static String printable_bytes(byte[] b){ String HEX_STRING = "0123456789ABCDEF"; String s = ""; for(int i = 0; i < b.length; i++){ byte c = b[i]; if(32 <= c && c <= 127){ s += (char)c; }else{ s += "\\x" + HEX_STRING.charAt(b[i] >>> 4); s += HEX_STRING.charAt(b[i] & 0x0F); } } return s; } public static String printable_bytes(String b){ String HEX_STRING = "0123456789ABCDEF"; String s = ""; for(int i = 0; i < b.length(); i++){ char c = b.charAt(i); if(32 <= c && c <= 127){ s += (char)c; }else{ s += "\\x" + HEX_STRING.charAt(c >>> 4); s += HEX_STRING.charAt(c & 0x0F); } } return s; } public static void main(String[] args) { AdemcoHbLibrary lib = new AdemcoHbLibrary(); lib.testPrint(); // test parse { System.out.println("testing parse..."); String data = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r"; System.out.println("using data=" + data); AdemcoHbLibrary.ParseResult res = lib.parse(data, data.length()); assert(res.result == 0); assert(res.cb_commited == data.length()); System.out.println("parse result=" + res.result + ",cb_commited=" + res.cb_commited); } // test pack { System.out.println("testing pack..."); System.out.println("using seq=1234, acct=861234567890, ademco_id=666666, event=3400, zone=0, gg=0"); String data = lib.pack(1234, "861234567890", 666666, 3400, 0, 0); System.out.println("data=" + data); } // test pack2 { System.out.println("testing pack2..."); System.out.println("using seq=1234, acct=861234567890, ademco_id=666666, event=3400, zone=0, gg=0, xdata=EB BA 3F A1 76"); // byte[] xdata = new byte[5]; // xdata[0] = '\u00EB'; // xdata[1] = '\u00BA'; // xdata[2] = '\u003F'; // xdata[3] = '\u00A1'; // xdata[4] = '\u0076'; // System.out.println("xdata="); // System.out.println(printable_bytes(xdata)); // String sx = new String(xdata); // System.out.println("sx=" + sx); String xdata = "\u00EB\u00BA\u003F\u00A1\u0076"; System.out.println("xdata=" + printable_bytes(xdata)); String data = lib.pack2(1234, "861234567890", 666666, 3400, 0, 0, xdata); try{ byte[] bytes = data.getBytes(data); System.out.println("data=" + printable_bytes(bytes)); }catch(UnsupportedEncodingException e){ System.out.println("data=" + printable_bytes(data)); } } // test pack ack { System.out.println("testing packAck..."); System.out.println("using seq=1234, acct=861234567890, "); String data = lib.packAck(1234, "861234567890"); System.out.println("data=" + data); } int port = 12345; if (args.length > 0){ port = Integer.parseInt(args[0]); } try (ServerSocket serverSocket = new ServerSocket(port)) { System.out.println("Server is listening on port " + port); while (true) { Socket socket = serverSocket.accept(); System.out.println("New client connected"); new SimpleServerThread(socket, lib).start(); } } catch (IOException ex) { System.out.println("Server exception: " + ex.getMessage()); ex.printStackTrace(); } } }