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

📄 chatserverthread.java

📁 ChatServerThread : Chat Ex use to Thread
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import java.util.*;

//***ChatServerThread 努贰胶 汲拌(立加阑 拌加 蜡瘤窍搁辑 单捞磐 价荐脚 窍扁 困秦辑 荤侩)*****
class ChatServerThread implements Runnable{
  Socket child;          //努扼捞攫飘客 烹脚窍扁 困茄 家南
  ObjectInputStream ois; //努扼捞攫飘肺何磐 单捞磐甫 荐脚罐扁 困茄 胶飘覆
  ObjectOutputStream oos;//努扼捞攫飘俊霸 单捞磐甫 价脚窍扁 困茄 胶飘覆

  //++货酚霸 眠啊等 函荐++++++++++++++++++++++++
  String user_id;//立加磊狼 酒捞叼甫 历厘且 函荐 急攫
  HashMap<String, ObjectOutputStream>  hm;  //胶饭靛 埃狼 沥焊甫 傍蜡且 HashMap
  
  //? 积己磊 : 涝免仿 胶飘覆阑 掘澜, 酒捞叼客 免仿 胶飘覆阑 秦浆 甘俊 殿废+++++++++++
  //ChatServerThread 积己磊肺 立加 夸没茄 家南 按眉客 秦浆 甘捞 傈崔等促.
  public ChatServerThread(Socket s, HashMap hm){
	child=s;    //努扼捞攫飘客 烹脚且 荐 乐绰 家南 沥焊甫 child俊 历厘窃
    this.hm=hm;
    try{
      //努扼捞攫飘肺何磐 酒捞乔 林家甫 掘绢 免仿窃 
      System.out.println(child.getInetAddress()+"肺何磐 楷搬夸没 罐澜");
      //努扼捞攫飘肺何磐 单捞磐甫 荐脚罐扁 困秦 努扼捞攫飘肺何磐 涝仿 胶飘覆阑 掘绢 
      ois = new ObjectInputStream(child.getInputStream());   //ObjectInputStream栏肺 函券
      //努扼捞攫飘肺 单捞磐甫 价脚窍扁 困秦辑 免仿 胶飘覆 掘绢 ObjectOutputStream栏肺 函券
      oos = new ObjectOutputStream(child.getOutputStream());

      //++++酒捞叼甫 掘绢客 酒捞叼客 免仿 胶飘覆阑 秦浆 甘俊 殿废+++++++++++
      //货肺款 努扼捞攫飘啊 立加秦辑 贸澜 焊辰 巩磊啊 酒捞叼捞骨肺 捞甫 掘绢 客辑  
      user_id = (String)ois.readObject();
      //捞固 辑滚俊 立加登绢 乐绰 葛电 努扼捞攫飘俊霸 XXX啊 立加登菌促绰 皋矫瘤 傈价
      broadcast(user_id + "丛捞 立加窍继嚼聪促.");
      System.out.println("立加茄 努扼捞攫飘狼 酒捞叼绰 "+ user_id + "涝聪促.");

      //咯矾 努扼捞攫飘俊霸 傍蜡登绰 秦浆 甘阑 悼扁拳矫糯
      synchronized(hm){
        //秦浆甘俊 荤侩磊狼 酒捞叼甫 key肺 免仿 胶飘覆阑 value肺 历厘窃
        //葛电 努扼捞攫飘俊 狼秦 傍蜡登绢 皋矫瘤甫 宏肺靛 某胶泼阑 困秦 免仿 胶飘覆阑 秦浆 甘俊 历厘
        hm.put(this.user_id, oos);               
      }
     }catch(ClassNotFoundException e){ 
       e.printStackTrace();
    }catch(IOException e){
      e.printStackTrace();
    }
  }//积己磊 场

  //? 努扼捞攫飘肺何磐 荐脚 罐篮 单捞磐甫 努扼捞攫飘俊霸 价脚茄促.+++++++++++
  public void run(){
    String receiveData;    //努扼捞攫飘肺何磐 荐脚 罐篮 单捞磐甫 历厘窍扁 困茄 函荐 
    try{
      while(true){
        //+++努扼捞攫飘肺何磐 焊郴柳 皋矫瘤甫 荐脚茄促.++++++++++++
        receiveData = (String)ois.readObject();  //涝仿 胶飘覆阑 烹秦 努扼捞攫飘啊 焊辰 皋矫瘤甫 佬绢咳 
        //努扼捞攫飘肺何磐 辆丰 皋矫瘤啊 甸绢坷搁 馆汗 巩阑 哈绢唱辑 finally 备巩栏肺 埃促. 
        if(receiveData.equals("/quit"))
          break;
        //庇加富阑 困秦辑 漂沥 努扼捞攫飘俊霸 皋矫瘤甫 焊陈促搁 sendMag甫 龋免茄促.
        else if(receiveData.equals("/to"))
          sendMsg(receiveData);
        else //罐篮 皋矫瘤甫 葛电 努扼捞攫飘俊霸 宏肺靛 某胶泼茄促.
          broadcast(user_id + " : " + receiveData);
       }// while
     }catch(Exception e){
       System.out.println("努扼捞攫飘啊 碍力 辆丰");
     }//catch
     finally{ // 努扼捞攫飘肺何磐 "/quit" 扼绰 辆丰 皋矫瘤啊 焊郴瘤搁 
       synchronized(hm){
         hm.remove(user_id);//辆丰 皋矫瘤 皋矫瘤甫 焊辰 努扼捞攫飘狼 沥焊甫 秦浆 甘俊辑 昏力茄 饶 
       }
       broadcast(user_id + "丛捞 唱啊继嚼聪促." ); //唱赣瘤 努扼捞攫飘俊霸 立加 辆丰甫 舅覆 
       System.out.println(user_id + "丛捞 唱啊继嚼聪促.");  //辑滚俊档 免仿
       try{
         if(child != null)
           child.close();    //唱埃 努扼捞攫飘 按眉甫 close 茄促. 
       }catch(Exception e){ }
     }//finally
  }//run 皋辑靛 场

  //? 罐篮 皋矫瘤甫 葛电 努扼捞攫飘俊霸 宏肺靛 某胶泼窍扁 困茄 皋辑靛++++++++++++
  public void broadcast(String message){
    //咯矾 努扼捞攫飘俊霸 傍蜡登绰 秦浆 甘阑 悼扁拳矫糯
    synchronized(hm){
      try{
        //秦浆 甘俊 殿废等 葛电 免仿 胶飘覆阑 掘绢客辑
        for( ObjectOutputStream oos : hm.values( )){
          oos.writeObject(message);           //荐脚 罐篮 皋矫瘤甫 促矫 价脚茄促.
          oos.flush();
        }
      }catch(IOException e){ }
    }
  }//broadcast 皋辑靛狼 场

  //? 庇加富阑 困秦辑 漂沥 努扼捞攫飘俊霸 皋矫瘤甫 焊陈促搁 促澜苞 鞍篮 屈侥栏肺 焊晨.++++++++++++
  // /to  酒捞叼  措拳郴侩 
  public void sendMsg(String message){
    //庇加富肺 逞绢柯 皋矫瘤 吝 酒捞叼 何盒俊 秦寸登绰 巩磊凯阑 茫扁 困秦辑 
    int begin = message.indexOf(" ") + 1;        //贸澜 傍归 巩磊 促澜何磐
    int end   = message.indexOf(" ", begin);     //滴 锅掳 傍归 巩磊 荤捞狼 巩磊啊 酒捞叼啊 凳
   
    if(end != -1){
      String id = message.substring(begin, end); //焊郴柳 皋矫瘤 吝 酒捞叼 何盒父 掘绢晨
      String msg = message.substring(end+1);     //酒捞叼 捞饶绰 措拳郴侩捞 等促.   
      ObjectOutputStream oos = hm.get(id);       //秦浆 甘俊辑 酒捞叼肺 免仿 胶飘覆阑 掘绢 晨
      try{
        if(oos != null){
          oos.writeObject(id + "丛捞 促澜苞 鞍篮 蓖加富阑 焊郴继嚼聪促. : " + msg);
          oos.flush();
        }//if
      }catch(IOException e){ }
    }//if
  }//sendMsg 皋辑靛 场

}//ChatServerThread 努贰胶狼 场

⌨️ 快捷键说明

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