⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java~95~

📁 java编写的聊天室,采用最新的面向对象技术编写,类似QQ的聊天室源程序
💻 JAVA~95~
字号:
import java.net.ServerSocket;
import java.io.IOException;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Server implements Runnable {
    private int port;
    private java.net.ServerSocket serverSocket;
    private java.util.ArrayList list = new java.util.ArrayList();

    private ChatServer frame = null;

    public Server(ChatServer frame) {
        this.frame = frame;
    }

    public void start() throws IOException {
        serverSocket = new ServerSocket(port);
        new Thread(this).start();
    }

    public void run() {
        try {
            while (true) {
                java.net.Socket client = serverSocket.accept();
                ClientWorker cw = new ClientWorker(client);
                list.add(cw);
                new Thread(cw).start();
            }
        } catch (Exception e) {
            stop();
        }
    }

    public void stop() {
        for (int i = 0; i < list.size(); i++) {
            ClientWorker cw = (ClientWorker) list.get(i);
            cw.close();
        }
        try {
            serverSocket.close();
        } catch (IOException ex) {
        }
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    class ClientWorker implements Runnable {
        java.net.Socket socket = null;
        java.io.PrintWriter out;
        java.io.BufferedReader in;

        ClientWorker(java.net.Socket socket) throws IOException {
            this.socket = socket;
            out = new java.io.PrintWriter(
                    new java.io.BufferedWriter(
                            new java.io.OutputStreamWriter(
                                    socket.getOutputStream())));
            in = new java.io.BufferedReader(
                    new java.io.InputStreamReader(
                            socket.getInputStream()));
        }

        public void send(String s) {
            out.println(s);
            out.flush();
        }

        public void close() {
            try {
                socket.close();
            } catch (IOException ex) {}
        }

        public void run() {
            try {
                String line = null;
                while ((line = in.readLine()) != null) {
                    frame.jTextArea1.append(line);
                    frame.jTextArea1.append("\n");

                    for (int i = 0; i < list.size(); i++) {
                        ClientWorker cw = (ClientWorker) list.get(i);
                        cw.send(line);
                    }
                }
            } catch (Exception e) {
            }
            list.remove(this);
        }

    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -