Code:
class SocketServer extends JFrame{ JLabel label = new JLabel("Text received over socket:"); JPanel panel; JTextArea progress = new JTextArea(); ServerSocket server = null; Callable<String> reverseTask = new Callable<String>; public void listenSocket(){ try{ server = new ServerSocket(4444); } catch (IOException e) { System.out.println("Could not listen on port 4444"); System.exit(-1); } while(true){ ClientWorker w; try{ w = new ClientWorker(server.accept(), progress); Thread t = new Thread(w); t.start(); } catch (IOException e) { System.out.println("Accept failed: 4444"); System.exit(-1); } } } SocketServer(){ //Begin Constructor Font f = new Font("Dialog", Font.PLAIN, 16); progress.setFont(f); JPanel p = new JPanel(); JButton b = new JButton("Start"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ft = new FutureTaskCallback<String>(reverseTask); toReverse = progress.getText(); exec.execute(ft); } }); p.add(b); b = new JButton("Stop"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (ft != null) ft.cancel(true); } }); p.add(b); Container cp = getContentPane(); cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); add(p); add(progress); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } //End Constructor ExecutorService exec = Executors.newSingleThreadExecutor(); FutureTaskCallback<String> ft; String toReverse; protected void finalize(){ // Objects created in run method are finalized when // program terminates and thread exits try{ server.close(); } catch (IOException e) { System.out.println("Could not close socket"); System.exit(-1); } } public static void main(String[] args){ SocketServer frame = new SocketServer(); frame.setTitle("Server Program"); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; frame.addWindowListener(l); frame.pack(); frame.setVisible(true); frame.listenSocket(); } }
please help
Comment