import java.io.*; import java.net.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class SwingTest { public static void main(String[] args) throws Exception { JFrame.setDefaultLookAndFeelDecorated(false); JFrame frame = new JFrame("Jerk IRC Client"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(120, 40)); JEditorPane pane = new JEditorPane(); pane.setEditable(true); frame.getContentPane().add(new JScrollPane(pane), "Center"); menuBar = new JMenuBar(); menuFile = new JMenu("FILE"); menuBar.add(menuFile); // menuitemExit = new JMenuItem("QUIT"); // menuFile.add(menuitemExit); frame.setJMenuBar(menuBar); frame.pack(); frame.setVisible(true); // javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run() {createAndShowGUI();}}); String server = "irc.freenode.net"; String nick = "wgb__"; String login = "wgb__"; String channel = "#wgb"; Socket socket = new Socket(server, 6667); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream( ))); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream( ))); writer.write("NICK " + nick + "\r\n"); writer.write("USER " + login + " 8 * : Jerk\r\n"); writer.flush( ); String line = null; while ((line = reader.readLine( )) != null) { if (line.indexOf("004") >= 0) { break; } else if (line.indexOf("433") >= 0) { pane.setText(pane.getText() + new String("Nickname already in use.\n")); return; } } writer.write("JOIN " + channel + "\r\n"); writer.flush( ); while ((line = reader.readLine( )) != null) { if (line.toLowerCase( ).startsWith("PING ")) { writer.write("PONG " + line.substring(5) + "\r\n"); writer.write("PRIVMSG " + channel + " :I got pinged!\r\n"); writer.flush( ); } else { pane.setText(pane.getText() + line + "\n"); } } } }