import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
public class ChatServer {
public static void main(String[] args) {
try {
int port = 2424;
ServerSocket serverSock = new ServerSocket(port);
while (true) {
Socket sock = serverSock.accept();
Thread t = new Thread(new ConnectionHandler(sock));
t.start();
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
import java.net.Socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.OutputStreamWriter;
import java.util.Vector;
import java.util.Iterator;
public class ConnectionHandler implements Runnable {
Socket sock;
static Vector list = new Vector();
BufferedReader br;
PrintWriter pw;
public void run() {
try {
br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
pw = new PrintWriter(new OutputStreamWriter(sock.getOutputStream()));
while(true) {
String line = br.readLine();
if ((line != null) && (line.endsWith("> bye"))) {
System.exit(0);
}
System.out.println(line);
broadcast(line);
pw.flush();
}
}
catch(Exception e) {
e.printStackTrace();
}
}
public void broadcast(String message) {
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
ConnectionHandler connectionHandler = (ConnectionHandler) iterator.next();
try {
connectionHandler.pw.println(message + "\n");
connectionHandler.pw.flush();
}
catch(Exception e) {
list.remove(connectionHandler);
}
}
}
public ConnectionHandler(Socket sock) {
this.sock = sock;
list.add(this);
}
}