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

📄 server.java

📁 JAVA聊天软件,socket 和多线程序
💻 JAVA
字号:
package com.server;


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


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;

    Face chat;

    public server(int port, Face 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;

    Face chat;
//服务端子线程 



    public ServerThread(Socket s, Face 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 + -