import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class ChatClient {
private Socket server;
private String nick;
private Frame ventana;
private TextArea texto;
private TextField mensaje;
private Button salir;
private PrintWriter out = null;
public ChatClient(String server, int port, String nick) {
ventana = new Frame("Java Chat v2.0");
ventana.setLayout(new BorderLayout());
mensaje = new TextField(100);
mensaje.addActionListener(new MensajeListener());
ventana.add(mensaje, "North");
texto = new TextArea(25, 100);
texto.setEnabled(true);
texto.setBackground(Color.white);
texto.setForeground(Color.black);
ventana.add(texto, "Center");
Panel opciones = new Panel();
opciones.setLayout(new FlowLayout());
salir = new Button("Salir");
salir.addActionListener(new SalirListener());
opciones.add(salir);
ventana.add(opciones, "South");
ventana.pack();
ventana.show();
try {
this.nick = nick;
this.server = new Socket(server, port);
ChatClientReader ccr = new ChatClientReader();
ccr.start();
out = new PrintWriter(
this.server.getOutputStream(), true);
out.println("*** " + nick + " se ha conectado ***");
}
catch(Exception e) {
System.err.println("ERROR: " + e.getMessage());
System.exit(0);
}
}
class ChatClientReader extends Thread {
public void run() {
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(
server.getInputStream()));
while(true) {
String line = in.readLine();
if (line == null)
break;
texto.append(line + " \n");
}
in.close();
server.close();
System.exit(0);
}
catch(Exception e) {
System.err.println("ERROR: " + e.getMessage());
System.exit(0);
}
}
}
class MensajeListener implements ActionListener {
public void actionPerformed(ActionEvent x) {
try {
out.println("[" + nick + "] " +
mensaje.getText());
mensaje.setText("");
}
catch(Exception e) {
System.err.println("ERROR: " + e.getMessage());
System.exit(0);
}
}
}
class SalirListener implements ActionListener {
public void actionPerformed(ActionEvent x) {
System.exit(0);
}
}
static public void main(String[] args) throws Exception {
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.print(" Nick > ");
String nick = stdin.readLine();
System.out.print(" Server > ");
String server = stdin.readLine();
System.out.print(" Port > ");
String port = stdin.readLine();
ChatClient cc = new ChatClient(server,
Integer.parseInt(port),
nick);
}
}