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

📄 connectlisten.java

📁 用hibernata连接数据库的java聊天室 有服务器端可踢人
💻 JAVA
字号:
package cr;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

class ConnectListen extends Thread{
   Socket socket;
   BufferedReader reader;
   PrintWriter writer;
   ServerMain smaTemp;
   boolean booKick;
  ConnectListen(Socket sock,ServerMain smaTemp){
  this.socket=sock;
  this.smaTemp=smaTemp;
  booKick=false;
  }
  public void run(){
  try {
    reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    writer=new PrintWriter(socket.getOutputStream(),true);
    String msg;
    while((msg=reader.readLine())!=null){
        String strObject=msg.substring(0, msg.indexOf("\1"));
        String strContent=msg.substring(msg.indexOf("\1")+1);
        String strName=smaTemp.ltaOnline.isName(smaTemp.cpoOnline.indesOf(socket)+1);
        if (strObject.equals("所有人")){
            smaTemp.cpoOnline.sendAll(strName+"对所有人说:"+strContent);
            smaTemp.jtaChats.append(strName+"对所有人说:"+strContent+"\n");
        }
        else {
            if (smaTemp.ltaOnline.isBeing(strObject)){
                int intObject=smaTemp.ltaOnline.getIndex(strObject)-1;
                smaTemp.cpoOnline.sendTo(intObject,strName+"对你说:"+strContent);
                writer.println("你对"+strObject+"说:"+strContent);
                smaTemp.jtaChats.append(strName+"对"+strObject+"说:"+strContent+"\n");
            }
       }
    }
  }
  catch (IOException ex) {
  }
  finally{
   if(booKick==false)
     try {
     String strName=smaTemp.ltaOnline.isName(smaTemp.cpoOnline.indesOf(socket)+1);  //获取本进程对象名字
     smaTemp.cpoOnline.remove(socket);             //在联接池删除自身
     smaTemp.ltaOnline.delElement(strName);         //在在线列表中删除自己
     smaTemp.ltaOnline.refurbish();
     smaTemp.jlaOnlineSum.setText(""+smaTemp.ltaOnline.getSum());       //更新在线人数
     smaTemp.jtaChats.append("系统广播:"+strName+"走了!"+"\n");              //在服务器端聊天窗口进行提示
     smaTemp.cpoOnline.sendAll("系统广播:"+strName+"走了!");             //在全聊天室进行广播
     smaTemp.cpoOnline.sendAll("DEL");
     smaTemp.cpoOnline.sendAll(strName);                  //通知所有客户端的在在线列表中删掉这个名字
     if (reader != null) {reader.close(); }
     if (writer!=null){writer.close();}
     if (socket!=null){socket.close();}
     reader=null;writer=null;socket=null;smaTemp=null;
     }
     catch (IOException ex1) {
    }

  }

  }
}

⌨️ 快捷键说明

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