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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? servermain.java

?? 用hibernata連接數(shù)據(jù)庫的java聊天室 有服務(wù)器端可踢人
?? JAVA
字號:
package cr;


import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ServerMain extends JFrame implements ActionListener{
    ListTable ltaOnline;                      //在線用戶的列表
    JTextArea jtaChats;                       //聊天記錄的顯示區(qū)
    JTextField jtfChat;                       //發(fā)言內(nèi)容的輸入框
    JTextField jtfObject;                     //發(fā)言針對對象
    JLabel jlaOnlineSum;                      //在線人數(shù)
    JButton jbuKick;                          //“踢”按鈕
    JButton jbuSend;                          //“發(fā)言”按鈕
    ConnectPond cpoOnline;                    //聯(lián)接池對象
    Vector vecConnectListener;                //連接監(jiān)聽對象存放向量
    
    public ServerMain() {
        //初始化主界面
        super("Xiang的聊天室的服務(wù)器端");
        this.setSize(620,500);
        Container conMain=this.getContentPane();
        this.setDefaultCloseOperation(3);

        jtaChats=new JTextArea();
        ltaOnline=new ListTable();
        cpoOnline=new ConnectPond();

        JPanel jpaDown=new JPanel();
        jbuKick=new JButton("踢");
        jbuKick.addActionListener(this);
        jbuSend=new JButton("發(fā)言");
        jbuSend.addActionListener(this);
        jlaOnlineSum=new JLabel("0");
        jtfChat=new JTextField(25);
        jtfObject=new JTextField("   所有人   ");
        jtfObject.setEditable(false);
        jpaDown.add(jbuKick);
        jpaDown.add(new JLabel("對:"));
        jpaDown.add(jtfObject);
        jpaDown.add(new JLabel("說:"));
        jpaDown.add(jtfChat);
        jpaDown.add(jbuSend);
        jpaDown.add(new JLabel("在線人數(shù):"));
        jpaDown.add(jlaOnlineSum);


        conMain.add(new JScrollPane(jtaChats),BorderLayout.CENTER);
        conMain.add(ltaOnline,BorderLayout.EAST);
        conMain.add(jpaDown,BorderLayout.SOUTH);


        this.setVisible(true);
        ltaOnline.addElement("所有人");

        vecConnectListener=new Vector();
        this.validate();
        //建立連接
        listenConnect();
    }

    void listenConnect(){
        ServerSocket ssoConnect = null;          //用于監(jiān)聽連接到服務(wù)器的連接
        Socket socConnect=null;                  //臨時存放新得到的連接套接字
        BufferedReader breTemp=null;             //臨時存放新建連接的輸入流
        PrintWriter pwrTemp=null;                //臨時存放新建連接的輸出流
        String strTemp=null;                     //字符串臨時變量
        int intSum=1;                            //更改用戶昵稱用到的變量

        try {
            ssoConnect = new ServerSocket(4000);       //檢測本機(jī)的4000端口
        } catch (IOException ex1) {
            System.out.println("建立ServerSocket失敗!");
        }


        while (true){                                 //永久循環(huán)檢測
            try {
                socConnect = ssoConnect.accept();      //檢測到新連接賦值
            } catch (IOException ex) {
                System.out.println("建立Socket失敗!");
            }

            try {                                     //獲取輸入輸出流
                breTemp = new BufferedReader(new InputStreamReader(socConnect.
                        getInputStream()));
                pwrTemp=new PrintWriter(socConnect.getOutputStream(),true);
            } catch (IOException ex2) {
                System.out.println("獲取IO流失敗!");
            }

            int intOnlineSum=ltaOnline.getSum()+1;    //計算給客戶端發(fā)送的在線聊友列表
                                                      //的數(shù)目,“所有人”項(xiàng)一并統(tǒng)計在內(nèi)
            pwrTemp.println(""+intOnlineSum);         //發(fā)送數(shù)目
            for (int i=0;i<intOnlineSum;i++){        //發(fā)送具體昵稱
                pwrTemp.println(ltaOnline.isName(i));
            }

            try {
                strTemp=breTemp.readLine();          //接收用戶定義的昵稱

                if (ltaOnline.isBeing(strTemp)){     //判斷昵稱已經(jīng)存在
                    strTemp+="克隆"+(intSum++)+"代";  //改名
                    pwrTemp.println("TRUE");         //通知客戶端接收新昵稱
                    pwrTemp.println(strTemp);        //向客戶端發(fā)送新昵稱
                }
                else
                     pwrTemp.println("FALSE");       //昵稱沒有重復(fù)

                jtaChats.append("系統(tǒng)廣播:歡迎"+strTemp+"來到本聊天室\n");
            } catch (IOException ex3) {
                System.out.println("讀數(shù)據(jù)失敗!");
            }

            ltaOnline.addElement(strTemp);      //將新來者加入到在線人員列表
            cpoOnline.add(socConnect);          //將新來者加入到聯(lián)接池
            ConnectListen cliTemp=new ConnectListen(socConnect,this);    //為新來者建立一個監(jiān)聽對象

            cliTemp.start();
            vecConnectListener.addElement(cliTemp);         //保存監(jiān)聽對象
            jlaOnlineSum.setText(""+ltaOnline.getSum());    //更新在線人數(shù)
            cpoOnline.sendAll("ADD");                       //通知所有在線客戶端增加一個聊友
            cpoOnline.sendAll(strTemp);                     //通知所有在線客戶端新聊友的昵稱
            cpoOnline.sendAll("系統(tǒng)廣播:歡迎"+strTemp+"來到本聊天室");
        }
    }


    class ListTable extends JPanel implements MouseListener{
        private BaTable jtaMain;      //用于顯示聊友昵稱的表
        private Vector vecHead,       //表頭
                        vecData;       //數(shù)據(jù)體
        ListTable(){
            super();
            vecHead=new Vector();
            vecData=new Vector();
            vecHead.add("asdsssssssss");
            jtaMain=new BaTable(vecData,vecHead);     //創(chuàng)建一個初始列表
            jtaMain.addMouseListener(this);           //加鼠標(biāo)監(jiān)聽
            this.add(jtaMain);
        }
        //在表中增加一個聊友昵稱
        void addElement(String strElement){
             Vector vecRow=new Vector();
             vecRow.add(strElement);
             vecData.add(vecRow);
             jtaMain.revalidate();
        }
        //在表中刪除一個聊友昵稱
        void delElement(String strElement){
            Vector vecRow=new Vector();
            vecRow.add(strElement);
            vecData.removeElement(vecRow);
            jtaMain.revalidate();
        }
        //獲取列表中的人數(shù)
        int getSum(){
            return vecData.size()-1;       //減去“所有人”項(xiàng)
        }
        //判斷某個昵稱是否有人在使用
        boolean isBeing(String strElement){
            Vector vecRow=new Vector();
            vecRow.add(strElement);
            return vecData.contains(vecRow);
        }
        //獲取某個序號的聊友昵稱
        String isName(int intTemp){
             Vector vecRow=(Vector)vecData.get(intTemp);
            return (String)vecRow.get(0);

        }
        //獲取某個昵稱的聊友的序號
        int getIndex(String strName){
            Vector vecRow=new Vector();
            vecRow.add(strName);
            return vecData.indexOf(vecRow);
        }

        void refurbish(){
            this.setVisible(false);
            this.setVisible(true);

        }

        public void mouseClicked(MouseEvent e) {
        }

        public void mousePressed(MouseEvent e) {
            //在聊友列表中點(diǎn)擊某個聊友時,將其昵稱填入到聊天對象框中
            jtfObject.setText((String)jtaMain.getValueAt(jtaMain.getSelectedRow(),0));
        }

        public void mouseReleased(MouseEvent e) {
        }

        public void mouseEntered(MouseEvent e) {
        }

        public void mouseExited(MouseEvent e) {
        }
    }
    //繼承一個JTable,將表項(xiàng)的缺省模式改為不可編輯
    public class BaTable extends JTable{
        public BaTable(){super();}        //缺省構(gòu)造方法

        public BaTable(Vector data, Vector head){     //向量構(gòu)造方法
            super(data,head);
        }
        public boolean isCellEditable(int row,int column){
            return false;   }                 //表項(xiàng)不可編輯
    }



    public static void main(String args[]){
        new ServerMain();
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==jbuSend){              //點(diǎn)擊“發(fā)言”按鈕
            if (jtfObject.getText().trim().equals("所有人")){    //發(fā)言對象是所有人
               cpoOnline.sendAll("服務(wù)器公告:"+jtfChat.getText());
               jtaChats.append("服務(wù)器公告:"+jtfChat.getText()+"\n");
            }
            else {                                 //發(fā)言對象是某個聊友
               cpoOnline.sendTo(ltaOnline.getIndex(jtfObject.getText().trim())-1,
                                "管理員對你說:"+jtfChat.getText());
               jtaChats.append("管理員對"+jtfObject.getText()+"說:"+jtfChat.getText()+"\n");
            }
        }

        if (e.getSource()==jbuKick){              //點(diǎn)擊“踢”按鈕
            if(jtfObject.getText().trim().equals("所有人")){      //企圖踢"所有人"
                jtaChats.append("把所有都踢走了就沒人陪你聊天了:(");
            }
            else {                                 //“請”某個聊友出聊天室
                int intObject=ltaOnline.getIndex(jtfObject.getText().trim())-1;  //得到其序號
                cpoOnline.sendTo(intObject,"你被管理員請請出了聊天室");       //給該聊友發(fā)送“請?zhí)?                jtaChats.append(jtfObject.getText().trim()+"被管理員請出了聊天室\n");
                ltaOnline.delElement(jtfObject.getText().trim());      //服務(wù)器在線人員列表刪除目標(biāo)
              //  ltaOnline.refurbish();
                jlaOnlineSum.setText(""+ltaOnline.getSum());           //更新在線人數(shù)
                cpoOnline.remove(intObject);                           //連接池中刪除相應(yīng)連接
                ConnectListen cliTemp=(ConnectListen)vecConnectListener.get(intObject);  //獲得對其的監(jiān)聽對象
                vecConnectListener.remove(intObject);                 //刪除監(jiān)聽該連接的對象
                cliTemp.booKick=true;                                //在目標(biāo)的監(jiān)聽對象中標(biāo)識為被踢
                try {
                    cliTemp.socket.close();                          //關(guān)閉該連接
                } catch (IOException ex) {
                }
                cpoOnline.sendAll("DEL");                            //通知在線客戶端刪除一個聊友
                cpoOnline.sendAll(jtfObject.getText().trim());       //發(fā)送該聊友的昵稱
                cpoOnline.sendAll(jtfObject.getText().trim()+"被管理員請出了聊天室");
            }
       }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情图片小说视频| 精品电影一区二区| 久久久激情视频| 亚洲第一激情av| 成人av在线一区二区| 日韩一级二级三级| 亚洲尤物在线视频观看| 成人激情开心网| 精品三级av在线| 日精品一区二区| 色悠久久久久综合欧美99| 久久久久久久久久久黄色| 日韩av中文字幕一区二区三区| 白白色 亚洲乱淫| 久久先锋影音av| 日本视频一区二区三区| 欧美午夜精品一区二区三区| 国产精品第四页| 国产成a人亚洲| 精品国精品国产| 青娱乐精品视频| 欧美日韩精品欧美日韩精品一| 国产精品不卡视频| 成人免费高清视频| 久久亚洲私人国产精品va媚药| 日本欧美韩国一区三区| 欧美日韩在线观看一区二区| 亚洲综合在线电影| 色婷婷激情综合| 亚洲欧美另类久久久精品 | 久久久午夜精品理论片中文字幕| 无吗不卡中文字幕| 亚洲免费毛片网站| 成a人片国产精品| 中国av一区二区三区| 国产aⅴ精品一区二区三区色成熟| 精品国产伦一区二区三区免费| 日本成人中文字幕在线视频| 欧美色老头old∨ideo| 亚洲午夜激情网站| 欧美酷刑日本凌虐凌虐| 亚洲国产视频直播| 欧美日韩激情在线| 手机精品视频在线观看| 这里只有精品免费| 日韩和欧美的一区| 欧美一区二区在线免费播放| 美女视频网站黄色亚洲| 欧美不卡激情三级在线观看| 国内精品自线一区二区三区视频| 久久久精品国产免费观看同学| 成人永久免费视频| 综合网在线视频| 欧美在线免费观看亚洲| 成人不卡免费av| 一色屋精品亚洲香蕉网站| 99精品黄色片免费大全| 一级日本不卡的影视| 欧美色视频在线| 免费观看成人av| 国产视频亚洲色图| www.欧美精品一二区| 亚洲午夜久久久久中文字幕久| 欧美另类z0zxhd电影| 久久99精品久久久| 国产欧美视频一区二区| 91免费观看国产| 午夜精品在线视频一区| 日韩欧美国产wwwww| 国产精品一区二区在线播放| 日韩一区在线播放| 尤物视频一区二区| 555www色欧美视频| 国内精品国产成人国产三级粉色| 日本一区免费视频| 日本久久精品电影| 蜜桃视频在线观看一区二区| 久久精品一区二区三区不卡| 91老司机福利 在线| 欧美aⅴ一区二区三区视频| 欧美激情一区二区三区全黄| 欧美系列一区二区| 国产精品一区二区久激情瑜伽 | 欧美一区二区三区啪啪| 国产激情91久久精品导航| 亚洲少妇中出一区| 日韩欧美你懂的| 97se狠狠狠综合亚洲狠狠| 日韩精品电影在线| 国产欧美日韩久久| 欧美日韩精品欧美日韩精品一综合| 国产美女一区二区三区| 亚洲综合久久久久| 久久久久久久久一| 欧美日韩成人高清| 成人动漫中文字幕| 日韩av不卡在线观看| 国产精品乱子久久久久| 666欧美在线视频| 成人激情校园春色| 蜜臀91精品一区二区三区| 亚洲欧洲无码一区二区三区| 日韩一区二区三区精品视频| zzijzzij亚洲日本少妇熟睡| 麻豆精品在线看| 亚洲最色的网站| 国产精品美女一区二区在线观看| 欧美日韩国产成人在线免费| 成人国产精品视频| 蜜臀99久久精品久久久久久软件| 亚洲精品第一国产综合野| 久久精品免费在线观看| 欧美美女一区二区在线观看| 波多野结衣91| 国产在线精品不卡| 日韩精品免费专区| 尤物视频一区二区| 国产精品高清亚洲| 国产亚洲婷婷免费| 欧美一区二区久久久| 在线观看亚洲精品视频| 成人免费高清在线观看| 国内精品久久久久影院薰衣草 | 午夜欧美电影在线观看| 国产精品不卡视频| 久久久久国产精品人| 日韩一区二区三区在线| 欧美性色黄大片| 91麻豆swag| 成人18视频在线播放| 国产精品66部| 经典三级在线一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 一区二区三区免费网站| 日韩一区在线播放| 国产精品热久久久久夜色精品三区 | 狠狠色丁香久久婷婷综合丁香| 日韩不卡在线观看日韩不卡视频| 亚洲最新视频在线观看| 亚洲人成在线播放网站岛国| 中日韩av电影| 国产精品黄色在线观看| 国产欧美精品一区二区色综合朱莉 | 99v久久综合狠狠综合久久| 国产盗摄视频一区二区三区| 激情五月激情综合网| 美腿丝袜亚洲综合| 麻豆国产精品一区二区三区| 青青草91视频| 日本特黄久久久高潮| 青青草国产精品97视觉盛宴| 午夜精品福利一区二区蜜股av| 亚洲午夜激情网页| 五月综合激情婷婷六月色窝| 亚洲va中文字幕| 性做久久久久久| 日韩国产在线一| 琪琪一区二区三区| 麻豆专区一区二区三区四区五区| 蜜桃视频在线观看一区二区| 久久精品国产一区二区三| 精品午夜久久福利影院| 国产毛片精品视频| 福利一区二区在线| 99热在这里有精品免费| 91网址在线看| 欧洲精品视频在线观看| 欧美日韩aaa| 日韩欧美高清一区| 久久久久久久精| 中文幕一区二区三区久久蜜桃| 国产欧美日韩综合| 综合久久久久久| 亚洲一区在线看| 人人爽香蕉精品| 国产精品影视在线观看| 丁香桃色午夜亚洲一区二区三区| 成人高清视频免费观看| 91美女视频网站| 欧美三日本三级三级在线播放| 51精品久久久久久久蜜臀| 欧美哺乳videos| 国产精品国产三级国产专播品爱网 | 日韩免费视频一区| 国产亚洲成年网址在线观看| 最新热久久免费视频| 亚洲影院理伦片| 九九九精品视频| 99精品在线观看视频| 欧美日韩午夜精品| 精品久久久久久无| 国产精品久久久久久亚洲毛片| 亚洲永久精品大片| 国产真实精品久久二三区| 99热在这里有精品免费| 69堂国产成人免费视频| 国产亚洲欧美在线| 亚洲综合小说图片| 国产一区二区不卡| 色婷婷综合久久久中文一区二区|