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

📄 server.java

📁 基于socket的聊天室程序java源码
💻 JAVA
字号:
package homework.h20090412.IM01;

//Server.java

import java.awt.*;
import java.net.*;
import java.io.*;

public class Server extends Thread {
    ServerSocket skt;

    Socket Client[]=new Socket[10];;
    Socket Client1=null;

    int i = 0;

    TextArea in;

    int port,k=0,l=0;

    //BufferedReader theInputStream;

    PrintStream theOutputStream;

    //String readin;

    ImGUI chat;

    public Server(int port, ImGUI chat) {
        try {
            this.port = port;
            skt = new ServerSocket(port);
            this.chat = chat;
        } catch (IOException e) {
            chat.ta.append(e.toString());
        }
    }

    public void run() {

        chat.ta.append("等待连线......");

        while (true) {
            //System.out.print(""+i+"\n");
            try {
            Client[k] = skt.accept(); /* 接收客户连接 */
            //当有客户端连接时就新建一个子线程
            if (i < 2) {
                ServerThread server[] = new ServerThread[10];
                 server[k]= new ServerThread(Client[k], this.chat, i);
                 l=server.length;
                 server[k].start();
                chat.ta.append("客户端" + Client[k].getInetAddress() + "已连线\n");
                /*theInputStream = new BufferedReader(new InputStreamReader(Client
                        .getInputStream()));*/
                //for(int j=0;j<server.length;j++)
                theOutputStream = new PrintStream(server[k].getClient().getOutputStream());
                i = server[k].getI();
                k++;
            } else {
                //theOutputStream = new PrintStream(null);
            }
        } catch (SocketException e) {
            //chat.ta.append("连线中断!\n");

            //chat.clientBtn.setEnabled(true);
            //chat.serverBtn.setEnabled(true);
            //chat.tfaddress.setEnabled(true);
            //chat.tfport.setEnabled(true);
            //try {
                    //skt.close();
                    //Client.close();
                //} catch (IOException err) {
                //    chat.ta.append(err.toString());
                //}
            } catch (IOException e) {
                chat.ta.append(e.toString());
            }
        }
    }

    public void dataout(String data) {
        //for(int j=0;j<l;j++)
        theOutputStream.println(data);
    }
}

class ServerThread extends Thread {
    ServerSocket skt;

    Socket Client;

    TextArea in;

    int port;

    int i;

    BufferedReader theInputStream;

    PrintStream theOutputStream;

    String readin;

    ImGUI chat;

    //服务端子线程

    public ServerThread(Socket s, ImGUI chat, int i) {
        this.i = ++i;
        Client = s;
        //this.port = port;
        //skt = new ServerSocket(port);
        this.chat = chat;

    }

    public int getI() {
        return this.i;
    }
    public Socket getClient() {
        return this.Client;
    }
    public void run() {
        //chat.ta.append("等待连线......");
        try {
            //Client = skt.accept(); /* 接收客户连接 */
            //chat.ta.append("客户端" + Client.getInetAddress() + "已连线\n");
            theInputStream = new BufferedReader(new InputStreamReader(Client.getInputStream()));
            theOutputStream = new PrintStream(Client.getOutputStream());
            while (true) {
                readin = theInputStream.readLine();
                chat.ta.append(readin + "\n");
            }

        } catch (SocketException e) {
            chat.ta.append("连线中断!\n");

            chat.clientBtn.setEnabled(true);
            chat.serverBtn.setEnabled(true);
            chat.tfaddress.setEnabled(true);
            chat.tfport.setEnabled(true);
            try {
                i--;
                skt.close();
                Client.close();
            } catch (IOException err) {
                chat.ta.append(err.toString());
            }
        } catch (IOException e) {
            chat.ta.append(e.toString());
        }
    }

    public void dataout(String data) {
        theOutputStream.println(data);
    }
}


⌨️ 快捷键说明

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