import java.net.*; import java.io.*; public class ArrayServer { public static void main(String[] args) { int valid = 0; int recvd = 0; while(true) { if(args.length < 1){ System.err.println("usage: java ArrayServer port"); System.exit(1); } System.out.println("Server started"); Socket conn = null; ServerSocket s = null; try { s = new ServerSocket(Integer.parseInt(args[0])); conn = s.accept(); } catch(IOException e) { System.err.println("Socket could not be opened"); System.exit(1); } byte[] data = new byte[1000000]; InputStream raw = null; try { raw = conn.getInputStream(); } catch(IOException e) { System.err.println("Couldnt get input"); System.exit(1); } while(true) { if(conn.isClosed()) { break; } try{ raw.read(data); } catch(IOException e) { System.err.println("Could not get input"); System.exit(1); } System.out.println("Array " + (recvd + 1) + " recieved"); boolean result = scan(data); if( result == true ) { valid++; } recvd++; } System.out.println("Recived " + recvd + " byte arrays."); System.out.println(valid + " arrays were valid."); try { conn.close(); s.close(); } catch(IOException e) { System.err.println("Error on closing connection"); System.exit(1); } break; } } public static boolean scan(byte[] input) { boolean result = false; if( input.length >= 2 && input[0] == 0 ) { for(int i = 1; i < input.length; i++) { if( input[i] == 1 ) { continue; } else if( i == input.length - 1 && input[i] == 0 ) { result = true; break; } break; } } else return false; return result; } }