import java.awt.*; import java.awt.event.*; import java.io.*; // InputStream import java.net.*; import java.applet.*; public class Cccp extends Applet implements ActionListener,Runnable { static TextArea textArea = new TextArea("Cccp applet starting...\n", 25, 80, java.awt.TextArea.SCROLLBARS_VERTICAL_ONLY); static Button connect = new Button("Connect"); static Button disconnect = new Button("Disconnect"); static Button clear = new Button("Clear"); static InputStream is; static Thread writer; static int connected; public void paint(Graphics g) { } public void connect() { if(connected == 1) { textArea.append("Already connected.\n"); repaint(); return; } try { InetAddress inetAddress = java.net.InetAddress.getByName("lightconsulting.com"); // InetAddress inetAddress = java.net.InetAddress.getLocalHost(); Socket s = new Socket(inetAddress, 65532); is = s.getInputStream(); OutputStream outputStream = s.getOutputStream(); String get = new String("GET / HTTP/1.0\n\n"); outputStream.write(get.getBytes()); textArea.append("Connected to " + s.getInetAddress().getHostName() + "(" + s.getInetAddress().getHostAddress() + ").\n"); connected = 1; writer = new Thread(this); writer.start(); repaint(); } catch(java.lang.IllegalThreadStateException e) { // we can get rid of this once we rewire the program to only start the writer thread once. } catch(UnknownHostException e) { textArea.append(e.toString() + "\n"); return; } catch(IOException e) { textArea.append(e.toString() + "\n"); return; } } public int updateDisplay() { if(connected == 0) { return 0; } try { int ret; int len; /* len = is.available(); if(len == 0) { java.lang.Thread.sleep(300); return 1; } */ len = 100; byte buf[] = new byte[len]; ret = is.read(buf, 0, 100); if(ret == -1) { connected = 0; textArea.append("Disconnected.\n"); repaint(); return 0; } String str = new String(buf); // System.out.print(str); textArea.append(str); repaint(); // java.lang.Thread.sleep(300); return 1; } catch(UnknownHostException e) { System.out.println(e.toString() + "\n"); // textArea.append(e.toString() + "\n"); return 0; } catch(IOException e) { if(e.getMessage().equals("Socket closed")) { if(connected == 1) { connected = 0; System.out.println("Disconnected." + "\n"); textArea.append("Disconnected.\n"); repaint(); return 0; } else { System.out.println("WTF?\n"); return 0; } } textArea.append(e.toString() + "\n"); System.out.println(e.toString() + "\n"); return 0; } catch(java.lang.NullPointerException e) { System.out.println(e.toString() + "\n"); // textArea.append(e.toString() + "\n"); return 0; } /* catch(InterruptedException e) { System.out.println(e.toString() + "\n"); // textArea.append(e.toString() + "\n"); return 0; } */ } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("clear")) { textArea.setText(""); } if(e.getActionCommand().equals("connect")) { connect(); } try { if(e.getActionCommand().equals("disconnect")) { if(connected == 1) { is.close(); connected = 0; textArea.append("Disconnected.\n"); } else { textArea.append("Already disconnected.\n"); } repaint(); } } catch(IOException ioe) { textArea.append(ioe.toString() + "\n"); return; } } public void destroy() { showStatus("Destroying..."); } public void init() { showStatus("Initializing..."); connect.addActionListener(this); connect.setActionCommand("connect"); disconnect.addActionListener(this); disconnect.setActionCommand("disconnect"); clear.addActionListener(this); clear.setActionCommand("clear"); add(connect); add(disconnect); add(clear); add(textArea); Cccp cccp = new Cccp(); // writer.start(); connect(); // updateDisplay(); } public void run() { while(true) { int ret; ret = updateDisplay(); if(ret == 0) { break; } } } // public void Cccp() {}; public void start() { showStatus("Starting..."); } public void stop() { showStatus("Stopping..."); } }