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

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

?? 客戶端.txt

?? java寫的一個能實現自動刷新的聊天程序
?? TXT
字號:
package day15.chat;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.*;

public class Client         {
        JPanel jp1=new JPanel();
        JFrame jf=new JFrame("聊天室");
        JOptionPane jop=new JOptionPane();
        JTextField jtfHost = new JTextField("127.0.0.1");//設置初始界面
        JTextField jtfPort = new JTextField("7456");
        JTextField jtfSend=new JTextField("",20);//設置聊天界面
        JTextArea jtfMessage=new JTextArea("",300,200);
        JFrame jf2=new JFrame("聊天室");
        private Socket so;//Socket
        private PrintStream ps;////客戶端寫
        private InputStreamReader isr;//客戶端讀
        private BufferedReader br;//讀
        private static ThreadLocal<String> tl=new ThreadLocal<String>();
        ClientThread ctFresh=new ClientThread();
        private boolean freshGoon=true;//是否刷新
        public Client (){
                System.out.println("begin");
//                jf.setLayout(new FlowLayout());
                JLabel jlHost=new JLabel("服務器");
                JLabel jlPort = new JLabel("端口");
                JButton jbStart=new JButton("確認");
                jbStart.addActionListener(new ActionListener(){//添加 確認按鈕 的 起動客戶端的事件
                        public void actionPerformed(ActionEvent e) {
                                String host=jtfHost.getText().trim();
                                try {
                                                so=new Socket(host, Integer.parseInt(jtfPort.getText().trim()));
                                        } catch (NumberFormatException e1) {
                                                JOptionPane.showMessageDialog(jf,"IP 地址或 端口 錯誤");
                                                return;
                                        } catch (UnknownHostException e1) {
                                                JOptionPane.showMessageDialog(jf,"找不到該主機");
                                                return;
                                        } catch (java.net.ConnectException e1) {
                                                JOptionPane.showMessageDialog(jf,"無法連接到服務器");        
                                                return;
                                        }catch (Exception e1) {
                                                JOptionPane.showMessageDialog(jf,"未知錯誤");
                                                return;
                                        }
                                        jf.setVisible(false);
                                        jf2.setVisible(true);
                                        try{
                                        ps= new PrintStream(so.getOutputStream());//客戶端寫
                                        isr=new InputStreamReader(so.getInputStream());//客戶端讀
                                        br=new BufferedReader(isr);//讀
                                        }
                                        catch(Exception ee){
                                                JOptionPane.showMessageDialog(jf,"未知錯誤");
                                        }
                                        ctFresh.start();//起動Fresh 刷新Thread   " ClientThread"
                                        tl.set("main");//設置主線程的ThreadLocal變量
                        }
                        
                });
                jp1.add(jlHost);
                jp1.add(jtfHost);
                jp1.add(jlPort);
                jp1.add(jtfPort);
                jp1.add(jbStart);
                jf.add(jp1,BorderLayout.NORTH);
                //設置聊天界面
                jtfSend.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e) {
                                if(jtfSend.getText()!=""){
                                                sendMessage();        
                                                jtfSend.setText("");
                                }
                        }
                });
                jf2.add(jtfSend,BorderLayout.NORTH);
                jf2.add(jtfMessage,BorderLayout.CENTER);
        
                jf.setSize(200,300);//設置位置等
                jf.setLocation(200,300);
                jf2.setSize(200,300);//設置位置等
                jf2.setLocation(200,300);                
                jf2.addWindowListener(new WindowListener(){

                        public void windowOpened(WindowEvent e) {
                        }

                        public void windowClosing(WindowEvent e) {
                                JOptionPane.showMessageDialog(jop,"hah closing");
                                try {
                                        freshGoon=false;
                                        ps.println("bye");//客戶端寫
                                        ps.close();
                                        br.close();
                                        so.close();
                                } catch (IOException e1) {
                                        JOptionPane.showMessageDialog(jop,"Error:When closing");
//                                                e1.printStackTrace();
                                }
                                jf.dispose();
                                jf2.dispose();
                        }

                        public void windowClosed(WindowEvent e) {
                                try {
                                        ps.println("bye");//客戶端寫
                                        ps.close();
                                        br.close();
                                        so.close();
                                } catch (IOException e1) {
                                                e1.printStackTrace();
                                }
                                jf.dispose();
                                jf2.dispose();
                        }
                        public void windowIconified(WindowEvent e) {
                        }

                        public void windowDeiconified(WindowEvent e) {
                        }

                        public void windowActivated(WindowEvent e) {
                        }

                        public void windowDeactivated(WindowEvent e) {
                        }
                        
                });
                jp1.setVisible(true);//設置顯示
                jf.setVisible(true);
                jf.pack();
                jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                
        }

        public synchronized void sendMessage(){//主線程會和刷新線程共用這個方法
                try {
                                if(this.tl==null)System.out.println("tl null");
                                if("Fresh".equals(tl.get())){//刷新線程
                                        
                                        ps.println("\u0000");//客戶端寫
                                }else{//主線程
                                        ps.println(this.jtfSend.getText());//客戶端寫
                                }
                                
                                this.jtfMessage.setText(br.readLine().replaceAll("\u0001","\n"));//客戶端讀
                                
                }catch (IOException e) {
                        JOptionPane.showMessageDialog(jf,"發送失敗");
                        e.printStackTrace();
                }
                
        }
        public static void main(String[] args) throws IOException {
                new Client ();
        }
        private class ClientThread extends Thread{
                public ClientThread(){
                        tl.set("Fresh");//設置刷新線程的ThreadLocal變量
                }
                public void run(){
                        while(freshGoon){
                        try {
                                Thread.sleep(5000);//每5秒刷新一次
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        sendMessage();
                        }
                }
        }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久丁香综合五月国产三级网站| 18欧美亚洲精品| 欧美日韩一区二区在线观看视频| 成人av中文字幕| 国产伦精品一区二区三区视频青涩 | 国产在线观看一区二区| 美女www一区二区| 久久66热re国产| 黄色日韩三级电影| 国产激情91久久精品导航| 国产电影一区在线| 成人av片在线观看| 色综合色狠狠天天综合色| 91麻豆免费观看| 欧美日韩一级黄| 精品国产免费一区二区三区香蕉| 2024国产精品| 中文字幕一区二区三区不卡| 亚洲欧美日韩电影| 日韩精品久久久久久| 麻豆国产精品官网| a4yy欧美一区二区三区| 色婷婷久久久综合中文字幕 | 精品一区二区国语对白| 国产在线视视频有精品| 97精品电影院| 欧美另类z0zxhd电影| 久久亚洲精品国产精品紫薇| 日本一区二区久久| 一个色综合网站| 激情深爱一区二区| 色av综合在线| 精品理论电影在线观看| 亚洲视频一区在线| 老司机午夜精品| 99国产精品久久久久久久久久| 91精品国产欧美一区二区| 日韩免费性生活视频播放| 中文字幕乱码亚洲精品一区| 亚洲成人激情自拍| 国产ts人妖一区二区| 欧美老肥妇做.爰bbww视频| 久久久久久久免费视频了| 一区二区三区在线观看网站| 国产原创一区二区三区| 欧美性大战久久久久久久蜜臀| 久久精品综合网| 蜜臀va亚洲va欧美va天堂| 色综合久久久久久久久久久| 久久综合久久综合亚洲| 婷婷六月综合亚洲| 色综合久久88色综合天天 | 在线看国产一区二区| 国产亚洲一本大道中文在线| 性感美女久久精品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 色94色欧美sute亚洲线路一ni| 精品理论电影在线观看 | 91免费看视频| 久久久久久97三级| 美女国产一区二区三区| 欧美人牲a欧美精品| 一个色在线综合| 在线影院国内精品| 中文字幕永久在线不卡| 三级一区在线视频先锋| 日韩欧美不卡一区| 久久精品人人做人人爽97| 粉嫩av亚洲一区二区图片| 视频一区在线视频| 日本va欧美va精品发布| 国产a区久久久| 亚洲成a人v欧美综合天堂下载| 26uuu精品一区二区三区四区在线| 色综合久久88色综合天天免费| 精品亚洲成a人| 裸体歌舞表演一区二区| 奇米影视7777精品一区二区| 成人av影视在线观看| 精品日产卡一卡二卡麻豆| 亚洲国产精品久久久久秋霞影院| 99国产精品99久久久久久| 国产女主播在线一区二区| 国产91精品久久久久久久网曝门| 日韩手机在线导航| 美女免费视频一区| 国产免费成人在线视频| 国产aⅴ精品一区二区三区色成熟| 欧美精品一区二区蜜臀亚洲| 国产一区二区三区国产| 国产精品久久久久久妇女6080| av电影在线观看不卡| 亚洲综合视频网| 在线综合亚洲欧美在线视频| 美女被吸乳得到大胸91| 国产亚洲精品免费| 一本一道波多野结衣一区二区| 亚洲国产sm捆绑调教视频 | 日本不卡的三区四区五区| 欧美区一区二区三区| 久久国产综合精品| 国产精品素人一区二区| 欧美亚洲动漫精品| 黑人精品欧美一区二区蜜桃 | 蜜桃视频一区二区三区在线观看| 亚洲精品在线观| 91香蕉视频mp4| 免费高清在线视频一区·| 国产欧美一区二区精品性| 91精品91久久久中77777| 美女脱光内衣内裤视频久久影院| 国产精品国产a| 日韩欧美精品在线视频| 99国产精品国产精品毛片| 久久国产福利国产秒拍| 亚洲少妇30p| 日韩欧美国产一区二区在线播放| 成人亚洲一区二区一| 日产国产欧美视频一区精品| 国产精品久久久久久久午夜片 | 久久精品国产精品亚洲综合| 国产精品乱码一区二区三区软件| 精品视频色一区| 国产成人精品免费在线| 亚洲一区二区三区四区在线观看| 久久久亚洲高清| 777欧美精品| 在线观看国产日韩| 99热99精品| 国精产品一区一区三区mba桃花| 亚洲电影在线播放| 成人v精品蜜桃久久一区| 精品综合久久久久久8888| 亚洲一卡二卡三卡四卡五卡| 日韩理论片一区二区| 国产精品二三区| 精品国产免费一区二区三区四区| 制服丝袜国产精品| 精品视频一区二区三区免费| www.爱久久.com| 国产sm精品调教视频网站| 精品在线播放免费| 蜜臀久久99精品久久久久久9| 亚洲成在人线免费| 丝袜美腿亚洲色图| 亚洲第一在线综合网站| 性欧美大战久久久久久久久| 一区二区三区四区激情| 一区二区三区精品久久久| 国产精品国产精品国产专区不蜜| 中文字幕欧美日韩一区| 国产精品久久一卡二卡| 中文字幕久久午夜不卡| 欧美国产一区视频在线观看| 欧美国产精品劲爆| 国产精品不卡在线| 1区2区3区国产精品| 亚洲欧美日韩一区二区| 一区二区在线观看视频| 亚洲乱码日产精品bd| 一区二区欧美精品| 日韩在线播放一区二区| 蜜臀av一区二区在线免费观看| 久久成人免费网站| 成人一区二区三区在线观看 | 午夜精品福利视频网站| 日本在线不卡视频一二三区| 蜜桃视频一区二区三区| 黑人巨大精品欧美黑白配亚洲| 国产精品1区2区| 成人理论电影网| 欧美精品tushy高清| 欧美一区二区久久| 久久男人中文字幕资源站| 欧美极品xxx| 亚洲福利一区二区三区| 蜜桃一区二区三区在线观看| 国产成人超碰人人澡人人澡| 色综合天天做天天爱| 欧美一区二区视频在线观看2020| 精品久久久久久无| 椎名由奈av一区二区三区| 视频一区视频二区中文| 粉嫩欧美一区二区三区高清影视| 91麻豆精品视频| 欧美电影免费观看高清完整版在线 | 中文字幕亚洲区| 日韩二区在线观看| 成人三级伦理片| 欧美一级免费大片| 国产精品你懂的在线| 日韩国产成人精品| 成人av在线播放网址| 日韩三级视频在线观看| 亚洲精品成人在线| 国产一区二区福利视频| 欧美精品xxxxbbbb| 亚洲蜜臀av乱码久久精品蜜桃| 毛片基地黄久久久久久天堂| 色一区在线观看|