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

📄 jqserver.java

📁 利用Java平台开发的一款模仿qq聊天功能的即时通讯软件。
💻 JAVA
字号:
package jq;

import java.net.*;
import java.io.*;
import java.util.*;

//类JQServer这是服务器类
public class JQServer {
    // 定义一个服务器套接字对象
    private ServerSocket server1;
    //bman是一个Vector数据结构的类,它是用来存储聊天记录的
    private bmanager bman=new bmanager();
    private JQServer(){}
    //负责接收和发送消息
    void startserver()
    {
        try{
            server1= new ServerSocket(6000);
            System.out.println("服务器套接字创建完毕");
            while(true)
            {
            Socket socket1=server1.accept();
            new chat_thread(socket1).start();
            bman.add(socket1);
            bman.sendclientinfo();
            }
        }
        catch(Exception e)
        {
          System.out.println(e);
        }
    }
    public static void main(String[] args) {
        JQServer server = new JQServer();
        server.startserver();
    }
    class chat_thread extends Thread
    {
      Socket socket1;
      private BufferedReader reader;
      private PrintWriter writer;
      chat_thread(Socket socket1)
      {
       this.socket1=socket1;
      }
      public void run()
      {
       try{
           reader = new BufferedReader(new InputStreamReader(socket1.
                   getInputStream()));
           writer = new PrintWriter(socket1.getOutputStream(), true);
           String info;
           while ((info = reader.readLine()) != null) {
               System.out.println(info);
               bman.sendtoall(info);
           }
       }
          catch(Exception e){}
          finally
          {
          try{
            bman.remove(socket1);
            if(reader!=null)
            {
              reader.close();
            }
            if(writer!=null)writer.close();
            if(socket1!=null)socket1.close();
            System.out.println("客户机离开了");
            bman.sendclientinfo();
          }
          catch(Exception e){}
          }
       }
      }
    class bmanager extends Vector
    {
        void add(Socket socket1) {
            super.add(socket1);
        }

        void remove(Socket socket1) {
            super.remove(socket1);
        }

        synchronized void sendtoall(String info) {
            PrintWriter writer = null;
            Socket socket1;
            for (int i = 0; i < size(); i++) {
                socket1 = (Socket) elementAt(i);
                try {
                    writer = new PrintWriter(socket1.getOutputStream(), true);
                } catch (Exception e) {
                    if (writer != null)
                        writer.println(info);
                }
            }
        }

        synchronized void sendclientinfo() {
            String info = "当前在线的人数:" + size();
            System.out.println(info);
            sendtoall(info);
        }
    }
}

⌨️ 快捷键说明

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