//Server.javapackage chat;
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Server extends JFrame {
    JTextArea jta = new JTextArea();
    JScrollPane sp = new JScrollPane(jta);
    //Hashtable ht = new Hashtable();    private ServerSocket serverSocket = null;
    public static int port = 1234;
    private boolean listening = true;
    Vector clientSockets = new Vector(10);    public Server() throws IOException {      Container con = this.getContentPane();
      con.setLayout(new BorderLayout());
      con.add(sp,BorderLayout.CENTER);
      this.setSize(300,300);
      this.setVisible(true);
      try {
            serverSocket = new ServerSocket(port);
        }
        catch (Exception ex) {
            System.err.println("不能监听端口:" + port);
            ex.printStackTrace(System.err);
            System.exit(-1);
        }        System.out.println("成功监听端口:" + port);
        jta.append("正在1234端口监听.....");        while (listening)
            addClient(serverSocket.accept());        serverSocket.close();
    }    public void addClient(Socket socket) throws IOException {
        new ServerThread(socket, this,jta).start();
        clientSockets.add(socket);
        send("欢迎 " + socket.getInetAddress().getHostName() + " 来到这里!");
        System.out.println("在线" + clientSockets.size() + " 人");
    }    public void removeClient(Socket socket) throws IOException {
        send("用户 " + socket.getInetAddress().getHostName() + "离开...");
        clientSockets.remove(socket);
        System.out.println("在线 " + clientSockets.size() + " 人");
    }    public void send(String msg) throws IOException {
        Socket socket = null;
        for (int I = 0; I < clientSockets.size(); I++) {
            socket = (Socket)(clientSockets.get(I));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            out.println(msg);
        }
    }    public static void main(String[] args) throws IOException {
        new Server();
    }
}
///ServerThread.javapackage chat;
import java.io.*;
import java.net.*;
import javax.swing.*;public class ServerThread extends Thread {
    private Server server = null;
    private Socket socket = null;
    private JTextArea jta = null;    private String userid;    public ServerThread(Socket socket, Server server,JTextArea jta) {
        super("jetic Chat Server");
        this.socket = socket;
        this.server = server;
        this.jta = jta;        userid = socket.getInetAddress().getHostName();    }    public void run() {
        PrintWriter out = null;
        BufferedReader in = null;
        String inputLine, outputLine;
        try {
            out = new PrintWriter(socket.getOutputStream(), true);
            in = new BufferedReader(
                                    new InputStreamReader(
                                    socket.getInputStream()));            out.println("可以开始聊天 :)");            while ((inputLine = in.readLine()) != null) {
                if (inputLine.equalsIgnoreCase("quit")) break;
                outputLine = jta.getText().trim();
                server.send(outputLine);
            }
        }
        catch (Exception ex) {
            ex.printStackTrace(System.err);
            Close();
        }
        finally {
            Close();
        }
    }    private void Close() {
        try {
            server.removeClient(socket);
            socket.close();
        }
        catch (Exception ex) {
            ex.printStackTrace(System.err);
        }
    }
}