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

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

?? defaultclientmodel.java

?? java chat java chat簡易聊天室程序源代碼,有很高的參考價值,能在它的基礎上進行2次開發.
?? JAVA
字號:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package chat.client;import chat.common.AbstractChatModel;import chat.common.LoginMessage;import chat.common.LogoutMessage;import chat.common.Message;import chat.common.TextMessage;import chat.common.UpdateUserMessage;import chat.common.User;import chat.common.UserListMessage;import java.io.File;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketAddress;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.DefaultListModel;import javax.swing.text.Document;import javax.swing.text.html.HTMLEditorKit;/** * * @author Administrator */public class DefaultClientModel extends AbstractChatModel implements ClientModel {    /**     * 當前用戶     */    protected User user;    /**     * 和服務器通信套接字     */    protected Socket socket;    /**     * 消息輸出流     */    protected ObjectOutputStream oos;    /**     * 消息輸入流     */    protected ObjectInputStream ois;    /**     * 列表框模型     */    protected DefaultListModel listModel;    /**     * 消息接收線程     */    protected RecvWorker worker;    /**     * 聊天內容文檔     */    protected Document document;    /**     * 表情資源     */    protected Map<String, File> faceMap;    /**     * 單態模式     */    private static DefaultClientModel model;    private DefaultClientModel() {        listModel = new DefaultListModel();        listModel.addElement(User.createAllUser());        HTMLEditorKit editKit = new HTMLEditorKit();        document = editKit.createDefaultDocument();        initFaceMap();    }    public Map<String, File> getFaceMap() {        return faceMap;    }    public void setFaceMap(Map<String, File> faceMap) {        this.faceMap = faceMap;    }    public Document getDocument() {        return document;    }    public void setDocument(Document document) {        this.document = document;    }    public static DefaultClientModel getInstance() {        if (model == null) {            model = new DefaultClientModel();        }        return model;    }    public DefaultListModel getListModel() {        return listModel;    }    public void setListModel(DefaultListModel listModel) {        this.listModel = listModel;    }    /**     * 發送登錄消息     * @param message     */    public void doLogin(LoginMessage message) {        switch (message.getStatus()) {            case LoginMessage.LOGIN_OK:                //處理登錄成功后業務                //發送獲取在線用戶列表消息                UserListMessage uMessage = new UserListMessage();                uMessage.setUser(message.getUser());                System.out.println("user list message " + uMessage);                DefaultClientModel.getInstance().sendMsg(uMessage);                break;            case LoginMessage.LOGIN_FAILED:                //處理登錄失敗后業務                //如果登錄失敗則關閉接收線程                worker.setStop(true);                break;        }        //通知表現層        this.fireUserLogin(message);    }    public void doLogout(LogoutMessage message) {        switch (message.getStatus()) {            case LogoutMessage.LOGOUT_OK:                worker.setStop(true);                try {                    socket.close();                } catch (IOException ex) {                    Logger.getLogger(DefaultClientModel.class.getName()).log(Level.SEVERE, null, ex);                }                break;            case LogoutMessage.LOGOUT_FAILED:                break;        }        //通知表現層        this.fireUserLogout(message);    }    public void sendMsg(Message message) {        try {            oos.writeObject(message);            oos.flush();            //如果是文本,處理表現層            if (message instanceof TextMessage) {                this.fireTextMessage((TextMessage) message);            }        } catch (IOException ex) {            Logger.getLogger(DefaultClientModel.class.getName()).log(Level.SEVERE, null, ex);        }    }    public void doUpdateUser(UpdateUserMessage message) {        switch (message.getStatus()) {            case UpdateUserMessage.NEW_USER_LOGIN:                listModel.addElement(message.getUser());                break;            case UpdateUserMessage.USER_LOGOUT:                listModel.removeElement(message.getUser());                break;        }        //通知表現層        this.fireUpdateUser(message);    }    public void startRecvWorker() {        worker = new RecvWorker(this);        new Thread(worker).start();    }    public void connect(InetSocketAddress address) {        try {            socket = new Socket(address.getAddress(), address.getPort());            /**             * 如果和服務器兩端同順序(先input,后output)會發生阻塞             */            oos = new ObjectOutputStream(socket.getOutputStream());            ois = new ObjectInputStream(socket.getInputStream());        } catch (IOException ex) {            Logger.getLogger(DefaultClientModel.class.getName()).log(Level.SEVERE, null, ex);        }    }    public void doUserList(UserListMessage message) {        for (User user : message.getCurrentUsers()) {            if (!user.equals(message.getUser())) {                listModel.addElement(user);            }        }        this.fireUserList(message);    }    public void doTextMessage(TextMessage message) {        this.fireTextMessage(message);    }    private void initFaceMap() {        faceMap = new HashMap<String, File>();        File faceFiles = new File("face/");        File files[] = faceFiles.listFiles();        for (File f : files) {            String fileName = f.getName().substring(0, f.getName().lastIndexOf('.'));            faceMap.put("(" + fileName + ")", f);        }    }    public String insertFace(String htmlText) {        for (String key : faceMap.keySet()) {            if (htmlText.contains(key)) {                htmlText = htmlText.replace(key, "<img src=\"file:" + faceMap.get(key).getAbsolutePath() + "\"/>");            }        }        return htmlText;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区不卡| 精品一区二区三区蜜桃| 久久久一区二区| 日韩美女一区二区三区| 欧美一区国产二区| 欧美日韩一区二区三区不卡| 欧洲一区二区三区免费视频| 91黄色免费版| 欧美专区在线观看一区| 欧美日韩一级片在线观看| 欧美乱妇一区二区三区不卡视频| 在线电影院国产精品| 欧美一二三区在线| 欧美精品一区二区三区一线天视频| 欧美电影免费观看高清完整版在线观看| 日韩美女视频一区二区在线观看| 欧美r级电影在线观看| 久久久不卡影院| 亚洲人成网站在线| 婷婷国产v国产偷v亚洲高清| 日本欧美一区二区三区| 国产精品资源网站| 99国产精品国产精品毛片| 色噜噜狠狠色综合欧洲selulu| 欧美日韩另类一区| 久久午夜免费电影| 一区二区三区中文字幕在线观看| 天天免费综合色| 国产成人午夜片在线观看高清观看| 成人avav在线| 欧美卡1卡2卡| 中文字幕精品一区二区精品绿巨人| 亚洲精品乱码久久久久久黑人 | 日韩一区二区免费电影| 久久视频一区二区| 亚洲日本在线看| 久久99九九99精品| 91国偷自产一区二区开放时间 | 亚洲精品一区二区三区影院| 欧美韩日一区二区三区四区| 亚洲色图一区二区三区| 免费一区二区视频| 色菇凉天天综合网| 久久精品视频在线免费观看| 亚洲成人av中文| 国产不卡在线播放| 欧美一区二区三区在线视频| 日韩毛片一二三区| 国产精品综合一区二区| 欧美精品久久99久久在免费线| 久久女同精品一区二区| 午夜电影一区二区三区| 99精品久久久久久| 久久精品这里都是精品| 日韩黄色小视频| 91成人国产精品| 国产精品福利av| 国产精品18久久久久久久久久久久| 欧美高清一级片在线| 亚洲日本在线天堂| 99r国产精品| 国产精品久久久一本精品| 国产乱码精品一区二区三区av| 欧美在线视频你懂得| 亚洲欧洲国产专区| www.激情成人| 国产欧美一区二区精品婷婷| 激情久久五月天| 日韩女优视频免费观看| 日本欧美在线看| 91精品国产91久久综合桃花| 视频一区在线播放| 制服丝袜日韩国产| 免费观看成人av| 日韩欧美一区在线观看| 免费人成网站在线观看欧美高清| 精品视频1区2区| 丝袜诱惑制服诱惑色一区在线观看 | 蜜桃91丨九色丨蝌蚪91桃色| 欧美色中文字幕| 婷婷久久综合九色综合伊人色| 欧美精品18+| 精品一区二区三区香蕉蜜桃| 精品国产精品网麻豆系列| 久久精品国产999大香线蕉| 精品国产91洋老外米糕| 国产suv精品一区二区三区| 国产精品久久久久一区二区三区 | 国产精品一二三| 欧美日韩成人在线| 午夜精品久久久久| 欧美日韩国产大片| 日韩av不卡在线观看| 欧美成人性福生活免费看| 韩国理伦片一区二区三区在线播放| 久久人人超碰精品| 成人app软件下载大全免费| 一区二区三区中文字幕电影| 欧美三级电影精品| 久草在线在线精品观看| 久久久久久久久97黄色工厂| 99久久er热在这里只有精品66| 亚洲激情校园春色| 日韩免费一区二区三区在线播放| 国产伦精品一区二区三区免费迷| 亚洲欧洲精品一区二区三区| 欧美日韩国产bt| 国产寡妇亲子伦一区二区| 亚洲欧美韩国综合色| 日韩免费一区二区三区在线播放| 国产suv一区二区三区88区| 亚洲小说欧美激情另类| 久久久久久久久久久99999| 色欧美日韩亚洲| 久久爱www久久做| 亚洲三级在线免费观看| 欧美r级电影在线观看| 欧美在线综合视频| 国产在线精品一区在线观看麻豆| 亚洲欧美一区二区三区孕妇| 日韩视频一区二区| 色综合天天综合网天天看片| 激情偷乱视频一区二区三区| 亚洲制服丝袜一区| 亚洲国产精品成人综合| 日韩视频免费观看高清完整版| 成人美女在线视频| 经典三级视频一区| 亚洲成av人片一区二区梦乃| 中文无字幕一区二区三区 | 国产一区二区精品久久| 亚洲综合无码一区二区| 亚洲国产精品成人综合| 精品国产欧美一区二区| 欧美日韩三级视频| 色婷婷综合久久久中文字幕| 高清国产午夜精品久久久久久| 蜜桃视频在线观看一区| 午夜激情综合网| 亚洲乱码国产乱码精品精可以看| 国产三级一区二区| 久久九九全国免费| 久久久九九九九| 久久综合九色综合97婷婷女人| 91精品国产91久久综合桃花| 欧美精品日韩一区| 欧美福利视频导航| 欧美精品久久天天躁| 欧美男同性恋视频网站| 欧美调教femdomvk| 欧美午夜理伦三级在线观看| 日本道精品一区二区三区| 91免费视频观看| 91啪亚洲精品| 在线亚洲人成电影网站色www| 91丨国产丨九色丨pron| 色综合久久综合中文综合网| 色呦呦日韩精品| 欧美专区在线观看一区| 精品视频资源站| 欧美一区二区三区在| 日韩久久久精品| 国产午夜精品美女毛片视频| 亚洲国产精品国自产拍av| 国产精品素人一区二区| 亚洲男人电影天堂| 亚洲一二三区不卡| 美女国产一区二区| 国产91综合网| 在线观看中文字幕不卡| 欧美三级乱人伦电影| 日韩美女在线视频| 欧美激情综合在线| 亚洲精品videosex极品| 午夜天堂影视香蕉久久| 久久精品国产第一区二区三区| 国产乱码字幕精品高清av| 99久久免费精品高清特色大片| 欧洲亚洲精品在线| 精品国产成人在线影院| 亚洲国产精品黑人久久久| 亚洲午夜精品久久久久久久久| 美女精品自拍一二三四| 99在线精品一区二区三区| 欧美人与z0zoxxxx视频| 久久综合九色综合97_久久久| 亚洲欧洲av另类| 青青草成人在线观看| 国产精品99久久久久久似苏梦涵 | 日本韩国一区二区三区视频| 91精品国产综合久久精品麻豆 | 99精品国产视频| 欧美三级视频在线播放| 欧美国产精品v| 亚洲国产视频一区二区| 国产成人免费视频网站| 欧美特级限制片免费在线观看| 久久青草国产手机看片福利盒子| 亚洲国产美女搞黄色| 99久久久国产精品|