public static void main(String[] args) { boolean sender = false; File fi = null; try { if (args.length == 0) { int ret = JOptionPane.showConfirmDialog( null, "Are you the sender? (no = reciever)", "Send/Recieve", JOptionPane.YES_NO_OPTION); JFileChooser chooser = new JFileChooser(); if (ret == JOptionPane.YES_OPTION) { chooser.showOpenDialog(null); sender = true; } else { chooser.showSaveDialog(null); sender = false; } fi = chooser.getSelectedFile(); } else { if (args[0].equalsIgnoreCase("-s")) { sender = true; } else if (args[0].equalsIgnoreCase("-r")) { sender = false; } fi = new File(args[1]); } } catch (Exception e) { e.printStackTrace(); exit(); } if (sender && !fi.exists()) { System.err.println("Cannot send, file doesn't exist"); exit(); } try { if (sender) { ServerSocket ss = new ServerSocket(DEFAULT_PORT); Socket sck = ss.accept(); byte[] hsh = SecureUtils.hash(fi); System.out.println(SecureUtils.hexify(hsh)); sendFile(sck, fi, hsh); sck.close(); } else { Socket sck = new Socket("localhost", DEFAULT_PORT); byte[] hsh = recvFile(sck, fi); System.out.println(SecureUtils.hexify(hsh)); sck.close(); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }