亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serverthread.java

?? 1. 消息即時通信 2. 消息發送實現一對一、一對多等多種發送模式 3. 發送的消息實現多彩文本編輯
?? JAVA
字號:
package chat;
import java.io.*;
import java.util.*;
import java.net.*;
/**
 *
 * <p>Title:服務器線程類 </p>
 * <p>Description: 消息轉發</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class ServerThread extends Thread {
  String _name;
  String _key;
  int counter;
  DataOutputStream dos=null;
  DataInputStream dis=null;
  Socket socket=null;
  Hashtable peopleList=null;
 // ChatUserDB chatUserDB=new ChatUserDB();
 XmlDispose xmlDispose=new XmlDispose();
 /**
  *
  * @param socket Socket 客戶套接
  * @param peopleList Hashtable 用戶列表
  */
 public ServerThread(Socket socket,Hashtable peopleList){
    this.socket=socket;
    this.peopleList=peopleList;
    try{
      dos=new DataOutputStream(socket.getOutputStream());
      dis=new DataInputStream(socket.getInputStream());
    }catch(IOException e){
      e.printStackTrace();
    }
  }
  public void run() {
    String s="LOGIN_SUCCEED:";
    while(true){
      String _message = null;
      try {
        _message = dis.readUTF();
        if(_message.startsWith("LOGIN_NAME:")){//用戶登陸
          //調用數據庫函數,確認用戶
          //存線程
          _name=_message.substring(_message.indexOf(":")+1,_message.indexOf("LOGIN_PD:"));
          _key=_message.substring(_message.indexOf("LOGIN_PD:")+9);

          //if(chatUserDB.checkUser(_name,_key)){
          try{
            if (xmlDispose.checkUser(_name, _key)) {//驗證登陸成功
              peopleList.put(_name, this);
              dos.writeUTF("LOGIN_SUCCEED:");
              dos.writeUTF("LOGIN_PEOPLE:大家");
              Enumeration _enum = peopleList.elements();
              while (_enum.hasMoreElements()) { //發送名字
                ServerThread serverThread = (ServerThread) _enum.nextElement();
                serverThread.dos.writeUTF("LOGIN_PEOPLE:" + _name);
                if (serverThread != this) {
                  dos.writeUTF("LOGIN_PEOPLE:" + serverThread._name);
                }
              }
              dos.flush();
            }
            else {
              //System.out.println("eeee");
              dos.writeUTF("LOGIN_ERROR");
            }
          }catch(Exception e){}

        }
        else if(_message.startsWith("PRIVATE_MESSAGE:")){//私人消息
          String _toPeoples=_message.substring(_message.indexOf("#TOPEOPLE#")+10,_message.indexOf("#MESSAGECONTENT#"));
          String _content=_message.substring(_message.indexOf("#MESSAGECONTENT#")+16);
          StringTokenizer fenxi=new StringTokenizer(_toPeoples,"$");
          counter=fenxi.countTokens();
          for(int i=0;i<counter;i++){//循環轉發消息
            String _toPeople=fenxi.nextToken();
            ServerThread serverThread=(ServerThread)peopleList.get(_toPeople);
            if(serverThread!=null){
              serverThread.dos.writeUTF("PRIVATE_MESSAGE:"+_name+"對您說:"+"#CONTENT#"+_content);
            }else{
              serverThread.dos.writeUTF("PEOPLE_LEAVE:"+_toPeople+"已經離開");
            }
          }
        }
        else if(_message.startsWith("PUBLIC_MESSAGE:")){//公共消息
          //轉發消息
          String _content=_message.substring(_message.indexOf("#MESSAGECONTENT#")+16);
          Enumeration enum=peopleList.elements();
          while(enum.hasMoreElements()){//循環轉發消息
            ServerThread serverThread=(ServerThread)enum.nextElement();
            if(serverThread!=this){//不發消息發給自己
              serverThread.dos.writeUTF("PUBLIC_MESSAGE:"+ _name + "對大家說:" +"#CONTENT#"+ _content);
            }
          }
        }
        else if(_message.startsWith("CONSOLE_PRIVATE_MESSAGE:")){//控制臺消息
          String _toPeoples=_message.substring(_message.indexOf("#TOPEOPLE#")+10,_message.indexOf("#MESSAGECONTENT#"));
          String _content=_message.substring(_message.indexOf("#MESSAGECONTENT#")+16);
          StringTokenizer fenxi=new StringTokenizer(_toPeoples,"$");
          counter=fenxi.countTokens();
          for(int i=0;i<counter;i++){
            String _toPeople=fenxi.nextToken();
            ServerThread serverThread=(ServerThread)peopleList.get(_toPeople);
            if(serverThread!=null){
              serverThread.dos.writeUTF("CONSOLE_PRIVATE_MESSAGE:"+_name+"對您說:"+"#CONTENT#"+_content);
            }else{
              serverThread.dos.writeUTF("PEOPLE_LEAVE:"+_toPeople+"已經離開");
            }
          }
        }
        else if(_message.startsWith("CONSOLE_PUBLIC_MESSAGE:")){//控制臺公共消息
          //轉發消息
          String _content=_message.substring(_message.indexOf("#MESSAGECONTENT#")+16);
          Enumeration enum=peopleList.elements();
          while(enum.hasMoreElements()){
            ServerThread serverThread=(ServerThread)enum.nextElement();
            if(serverThread!=this){
              serverThread.dos.writeUTF("CONSOLE_PUBLIC_MESSAGE:"+ _name + "對大家說:" +"#CONTENT#"+ _content);
            }
          }
        }
        else if(_message.startsWith("SEND_FILE:")){//發送文件
          String _toPeople=_message.substring(_message.indexOf("#TOPEOPLE#")+10,_message.indexOf("#PORT#"));
          String _toSendFile=_message.substring(_message.indexOf("SEND_FILE:")+10,_message.indexOf("#TOPEOPLE#"));
          String _port=_message.substring(_message.indexOf("#PORT#")+6,_message.indexOf("#FILE_LENGTH#"));
          String fileLength=_message.substring(_message.indexOf("#FILE_LENGTH#")+13);
          ServerThread serverThread=(ServerThread)peopleList.get(_toPeople);

          InetAddress ipAddress=this.socket.getInetAddress();

            if(serverThread!=null){
              serverThread.dos.writeUTF("SEND_FILE:"+_name+"#TOSENDFILE#"+_toSendFile+"#IPADDRESS#"+ipAddress+"#PORT#"+_port+"#FILE_LENGTH#"+fileLength);
             // System.out.println("SEND_FILE:"+_name+"#TOSENDFILE#"+_toSendFile+"#IPADDRESS#"+ipAddress+"#PORT#"+_port+"#FILE_LENGTH#"+fileLength);
            }else{
              serverThread.dos.writeUTF("PEOPLE_LEAVE:"+_toPeople+"已經離開");
            }
          //File f=new File(_toSendFile);
          //System.out.println(_toPeople+" "+f.getName()+" "+_port);
        }
        else if(_message.startsWith("CANCEL_SENDING:")){//取消發送文件
          //System.out.println(_message);
          String _fromPeople=_message.substring(_message.indexOf("CANCEL_SENDING:")+15,_message.indexOf("#TOPEOPLE#"));
          String _content=_message.substring(_message.indexOf("#TOPEOPLE#")+10);
          ServerThread serverThread=(ServerThread)peopleList.get(_fromPeople);
          if(serverThread!=null){
            serverThread.dos.writeUTF("CANCEL_SENDING:"+_content);
          }
        }
        else if(_message.startsWith("CANCEL_RECEIVED:")){//取消接收
         // System.out.println(_message);
          String _fromPeople=_message.substring(_message.indexOf("CANCEL_RECEIVED:")+16,_message.indexOf("#TOPEOPLE#"));
          String _content=_message.substring(_message.indexOf("#TOPEOPLE#")+10);
          ServerThread serverThread=(ServerThread)peopleList.get(_fromPeople);
          if(serverThread!=null){
            serverThread.dos.writeUTF("CANCEL_RECEIVED:"+_content);
          }
        }
        else if(_message.startsWith("PRIVATEMESSAGELOG:")){//私人聊天記錄
          String _content=_message.substring(18);
          String filePath="./chatLog";
          File chatLog=new File(filePath,this._name);
          if(!chatLog.exists()){
            chatLog.mkdir();
          }
          File saveFile;
          RandomAccessFile outputStream;
          try{
            saveFile = new File(chatLog,this._name + "私人");
            outputStream = new RandomAccessFile(saveFile, "rw");
            outputStream.seek(outputStream.length());
            outputStream.write(_content.getBytes());
            outputStream.close();
          }catch(Exception e){
          }
        }
        else if(_message.startsWith("PUBLICMESSAGELOG:")){//公共聊天記錄
          String _content=_message.substring(17);
          String filePath="./chatLog";
          File chatLog=new File(filePath,this._name);
          if(!chatLog.exists()){
            chatLog.mkdir();
          }
          File saveFile;
          RandomAccessFile outputStream;
          try{
            saveFile = new File(chatLog,this._name + "公共");
            outputStream = new RandomAccessFile(saveFile, "rw");
            outputStream.seek(outputStream.length());
            outputStream.write(_content.getBytes());
            outputStream.close();
          }catch(Exception e){
          }
        }
        else if(_message.startsWith("REGISTER_NAME:")){//用戶注冊
          _name=_message.substring(_message.indexOf(":")+1,_message.indexOf("#REGISTER_PD#"));
          _key=_message.substring(_message.indexOf("#REGISTER_PD#")+13,_message.indexOf("#REGISTER_NAME#"));
          String _trueName=_message.substring(_message.indexOf("#REGISTER_NAME#")+15,_message.indexOf("#REGISTER_EMAIL#"));
          String _email=_message.substring(_message.lastIndexOf("#REGISTER_EMAIL#")+16);
          byte result=xmlDispose.registerUser(_name,_key,_trueName,_email);
          if(result==1){
            dos.writeUTF("REGISTER_SUCCEED:");

          }else if(result==-1){
            dos.writeUTF("REGISTER_ERROR_EXIST");

          }else if(result==0){
            dos.writeUTF("REGISTER_ERROR");

          }
        }
      }
      catch (IOException ioe) {
        Enumeration enum=peopleList.elements();
        while(enum.hasMoreElements()){
          try{
            ServerThread serverThread=(ServerThread)enum.nextElement();
            if(serverThread!=this&&serverThread.isAlive()){
              serverThread.dos.writeUTF("PEOPLE_LEAVE:"+this._name);
            }
          }catch(Exception e){

          }
        }
        try{
          if (peopleList.containsKey(_name)) {
            peopleList.remove(_name);
          }
        }catch(Exception e){

        }
        //System.out.println();
        //ioe.printStackTrace();
        try{
          this.socket.close();
          this.dos.flush();
          this.dos.close();
          this.dis.close();
          break;
        }catch(Exception  e){
          //System.out.println("serverthread");
          //e.printStackTrace();
        }
      }
    }

  }









 /* public static void main(String[] args) {
  }*/
}










?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色播五月| 国产又黄又大久久| 麻豆精品视频在线观看视频| 国产精品12区| 日韩一本二本av| 一区二区三区四区视频精品免费| 国产剧情在线观看一区二区| 欧美精品三级在线观看| 亚洲人xxxx| 成人午夜在线播放| 欧美不卡一二三| 日韩国产在线一| 91麻豆免费观看| 中文字幕欧美国产| 国产高清在线观看免费不卡| 欧美一区二区三区人| 亚洲综合另类小说| 亚洲另类春色校园小说| 东方aⅴ免费观看久久av| 久久久久久一二三区| 51久久夜色精品国产麻豆| 亚洲欧美色图小说| 99精品久久久久久| 国产精品第四页| 风间由美一区二区三区在线观看 | 国产91综合一区在线观看| 日日摸夜夜添夜夜添精品视频| 99综合电影在线视频| 国产欧美日韩在线观看| 精品一区二区久久久| 欧美探花视频资源| 亚洲激情五月婷婷| 一本色道久久加勒比精品| 国产人伦精品一区二区| 粉嫩aⅴ一区二区三区四区 | 在线免费一区三区| 亚洲欧美另类图片小说| 一本色道久久综合亚洲aⅴ蜜桃 | 国产网红主播福利一区二区| 韩国v欧美v日本v亚洲v| 国产亚洲精品超碰| caoporen国产精品视频| 亚洲视频精选在线| 欧美中文一区二区三区| 亚洲国产精品一区二区www在线| 在线视频一区二区三区| 视频精品一区二区| 亚洲精品一区二区三区蜜桃下载 | 亚洲午夜三级在线| 欧美一区二区国产| 亚洲成a天堂v人片| 日韩一区二区免费高清| 麻豆91免费观看| 久久综合色播五月| 成人精品视频一区二区三区尤物| 国产精品美女久久久久久| 色婷婷激情久久| 午夜精品一区二区三区电影天堂 | 日韩欧美国产电影| 成人免费高清在线观看| 一区二区三区免费在线观看| 欧美一级黄色录像| 成人午夜碰碰视频| 视频一区免费在线观看| 国产亚洲一区二区三区四区| 欧美三级日本三级少妇99| 欧美一级淫片007| 成人免费视频国产在线观看| 一区二区欧美精品| 日韩欧美一区二区视频| 高清免费成人av| 日韩高清中文字幕一区| 日本一区二区三区免费乱视频| 色婷婷狠狠综合| 国产乱对白刺激视频不卡| 亚洲夂夂婷婷色拍ww47| 亚洲精品一区在线观看| 欧美日韩你懂的| 成人高清视频免费观看| 免费高清成人在线| 夜夜操天天操亚洲| 日本一区二区综合亚洲| 精品理论电影在线观看| 欧美亚一区二区| 成人午夜伦理影院| 狠狠色丁香婷婷综合久久片| 亚洲精品高清在线观看| 欧美变态口味重另类| 亚洲天堂2014| 精品久久久久香蕉网| 欧美午夜片在线观看| 成人av资源在线| 国内成+人亚洲+欧美+综合在线| 亚洲精品第1页| 国产精品久久久久国产精品日日| 欧美大胆人体bbbb| 欧美精选在线播放| 在线视频观看一区| 99精品视频在线免费观看| 国产不卡视频在线播放| 国产美女精品一区二区三区| 亚洲不卡av一区二区三区| 夜夜精品浪潮av一区二区三区| 国产精品色呦呦| 国产精品少妇自拍| 欧美经典一区二区三区| www国产精品av| 精品日韩在线观看| 精品国产一区二区三区忘忧草| 欧美日韩成人在线一区| 一片黄亚洲嫩模| 国产盗摄视频一区二区三区| 日韩av一二三| 日日夜夜免费精品| 日本不卡一二三| 婷婷中文字幕综合| 日精品一区二区| 秋霞av亚洲一区二区三| 久久精品国产第一区二区三区| 日本在线不卡视频一二三区| 日韩精品免费专区| 久久超碰97中文字幕| 久久精品国产一区二区| 国产美女av一区二区三区| 成人免费av在线| 91在线观看视频| 欧洲一区二区三区在线| 51午夜精品国产| 久久综合久久鬼色中文字| 久久免费电影网| 中文字幕欧美区| 亚洲永久精品国产| 首页综合国产亚洲丝袜| 麻豆91在线播放| 波多野结衣精品在线| 欧美亚男人的天堂| 欧美性猛交xxxx乱大交退制版 | 欧美午夜电影一区| 欧美日韩aaaaaa| 精品久久久网站| 中文字幕一区在线观看视频| 亚洲最快最全在线视频| 日本成人在线一区| av资源站一区| av激情综合网| 一区二区三区欧美日| 亚洲成人福利片| 欧美色手机在线观看| 精品美女在线播放| 国产一区二区中文字幕| 色综合网站在线| 日韩丝袜情趣美女图片| 亚洲国产精品成人久久综合一区| 国产精品久久久久久久久动漫| 蜜桃av噜噜一区| 国产精品资源在线| 91黄色免费看| 91精品国产aⅴ一区二区| 国产色一区二区| 99久久国产综合精品色伊 | 欧美一区二区三区啪啪| 久久久久久久久一| 午夜精品一区二区三区三上悠亚 | 成人免费看片app下载| 欧美久久久久久蜜桃| 99久久久久久| 亚洲综合另类小说| 青青草国产成人av片免费| 麻豆精品一二三| 国产精品久久久99| 日韩中文字幕区一区有砖一区| 91精选在线观看| 一区二区三区中文在线观看| 26uuu亚洲综合色欧美 | 成人av在线播放网址| heyzo一本久久综合| 日本一区二区三区久久久久久久久不 | 在线观看中文字幕不卡| 亚洲风情在线资源站| 精品国产一区二区三区久久影院| 亚洲欧美成人一区二区三区| 欧美精品 日韩| 高清在线成人网| 亚洲综合在线五月| 成人午夜av影视| 久久久久久麻豆| 天堂va蜜桃一区二区三区漫画版| 欧美日韩国产免费一区二区| 本田岬高潮一区二区三区| www国产精品av| 91欧美激情一区二区三区成人| 亚洲视频在线一区二区| 亚洲国产精品综合小说图片区| 国产精品水嫩水嫩| 久久99久久久欧美国产| 欧美视频自拍偷拍| 日韩免费成人网| 欧美不卡视频一区| 国产在线国偷精品产拍免费yy| 一级中文字幕一区二区|