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

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

?? chatapplet.java

?? 通過網絡會議室代碼
?? JAVA
字號:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class chatApplet extends Applet {
  /*以下用于定義UI變量*/
  Panel panel1 = new Panel();        //用于放置輸入姓名和連接兩個按鈕
  BorderLayout borderLayout1 = new BorderLayout();
  Panel panel2 = new Panel();        //用于放置聊天信息顯示和聊天人員列表
  Panel panel3 = new Panel();        //用于放置發送信息區域
  FlowLayout flowLayout1 = new FlowLayout();
  FlowLayout flowLayout2 = new FlowLayout();
  Label label0 = new Label();
  TextField ip_txt = new TextField(10);
  Label label1 = new Label();
  TextField name_txt = new TextField(10);
  Button button1 = new Button();
  Button button2 = new Button();
  TextArea chat_txt = new TextArea(15,30);//發言清單
  Label label2 = new Label();
  Button button3 = new Button();
  TextField msg_txt = new TextField(20);//
  java.awt.List list1 = new java.awt.List(13);//顯示會議人員
  
  /*以下定義數據流和網絡變量*/
  Socket soc=null;                   //定義連接套接字
  PrintStream ps=null;                 //定義打印流 
  Listen listen=null;                 //定義一個客戶端線程
  
  public void init()                 //初始化圖形界面
	{
	  resize(475,350);  
     this.setLayout(borderLayout1);
    panel2.setLayout(flowLayout1);
    panel3.setLayout(flowLayout2);
    label0.setText("主機ip:");
    label1.setText("我的名字:");
     
    button1.setLabel("進入");
    button2.setLabel("離開");

    chat_txt.setEditable(false);
    panel2.setBackground(Color.DARK_GRAY);
    panel1.setBackground(Color.DARK_GRAY);
    label2.setText("我要發言:");
    button3.setLabel("發送");
    msg_txt.setText("這里輸入");
    panel3.setBackground(Color.DARK_GRAY);
    this.add(panel1, BorderLayout.NORTH);
    panel1.add(label0,null);
    panel1.add(ip_txt, null);
    panel1.add(label1, null);
    panel1.add(name_txt, null);
    panel1.add(button1, null);
    panel1.add(button2, null);
    this.add(panel2, BorderLayout.CENTER);
    panel2.add(chat_txt, null);
    panel2.add(list1, null);
    this.add(panel3,  BorderLayout.SOUTH);
    panel3.add(label2, null);
    panel3.add(msg_txt, null);
    panel3.add(button3, null);
  }

  public boolean action(Event evt,Object obj)    //事件觸發代碼
	{
      if(evt.target instanceof Button)
		{
	     String label=(String) obj;
		 if(label.equals("進入"))                //點擊'進入'
			{
		     if(soc==null)
			 	{
			     try
					{
					 soc=new Socket(InetAddress.getByName(ip_txt.getText()),2525);     //使用端口2525實例化一個套接字
					 System.out.println(soc);                             //在控制臺打印實例化的結果
					 ps=new PrintStream(soc.getOutputStream());           //將ps作為soc的輸出流
					 StringBuffer info=new StringBuffer("INFO: ");        //定義一個字符緩沖存儲發送信息
					                                                      //其中INFO為關鍵字讓服務器識別為連接信息
																		  //并將name和ip用":"分開,在服務器端將用一個
																		  //StringTokenizer類來讀取數據
					 String userinfo=name_txt.getText()+":"+InetAddress.getLocalHost().toString();
					 ps.println(info.append(userinfo));
				
					 ps.flush();
					 chat_txt.appendText("connecting...\n");
					 listen=new Listen(this,name_txt.getText(),soc);    //將客戶端線程實例化  
					 listen.start();                                    //啟動線程
				 }
				 catch(IOException e)
					{
				     System.out.println("Error4:"+e);
					 disconnect();
				 }
			 }   //end of if
		 }//end of if
	   else if(label.equals("離開"))                               //如果點擊斷開連接按鈕則運行disconnect()
			{
	         disconnect();
	   }
	   else if(label.equals("發送"))                                 //如果點擊發送按鈕
			{
	         if(soc!=null)
				{
			     StringBuffer msg=new StringBuffer("MSG: ");        //定義并實例化一個字符緩沖存儲發送的聊天信息
				                                                    //其中MSG為關鍵詞
				 try
				 {
				        String msgtxt=new String(msg_txt.getText());
				 }
				 catch(Exception e){}
				 
				 ps.println(msg.append(msg_txt.getText()));          //用打印流發送聊天信息
				 ps.flush();
			 }
	   }
	  }
     return true;
  }   //end of method action

  public void disconnect()                                         //客戶端點擊斷開連接要運行的方法
	{
     if(soc!=null)
		{
	     try
			{
		    listen.suspend();
			ps.println("QUIT");                                    //用打印流發送QUIT信息通知服務器斷開此次通信
			ps.flush();
			soc.close();                                            //關閉套接字
		 }
		 catch(IOException e)
			{
		     System.out.println("Error5:"+e);
		 }
		 finally
			{
			 
		 }
	 }// end of if
  }

  class Listen extends Thread       //客戶端線程類用來監聽服務器傳來的信息
{
 String name=null;                   //用來存儲客戶端連接后的name信息
 DataInputStream dis=null;          //用來實現客戶端接受服務器數據的輸入流
 PrintStream ps=null;               //用來實現從客戶端發送數據到服務器的打印流
 Socket socket=null;                //用來存儲客戶端的socket信息
 chatApplet parent=null;             //用來存儲當前運行的chatApplet實例

 public Listen(chatApplet p,String n,Socket s)   //Listen類的構造器
	{
     //接受參數
	 parent=p;
	 name=n;
	 socket=s;

	 try
		{
		 //實例化兩個數據流
	     dis=new DataInputStream(s.getInputStream());
		 ps=new PrintStream(s.getOutputStream());

	 }
	 catch(IOException e)
		{
	     System.out.println("Error1:"+e);
		 parent.disconnect();
	   }
    }   //end of Listen constractor
  
 public void run()                               //線程運行方法
	{
      String msg=null;
	  while(true)
		{
	     try{msg=dis.readLine();}                 //讀取從服務器傳來的信息
		 catch(IOException e)
			{
		     System.out.println("Error2:"+e);
			 parent.disconnect();
		 }
		 if (msg==null)                           //如果從服務器傳來的信息為空則斷開此次連接
		 {
		   parent.listen=null;              
		   parent.soc=null;
		   parent.list1.clear();
		   return;
		 }
		 StringTokenizer st=new StringTokenizer(msg,":");   //用StringTokenizer類來實現讀取分段字符
		 String keyword=st.nextToken();                     //讀取信息頭即關鍵字用來識別是何種信息

		 if(keyword.equals("PEOPLE"))                      //如果是PEOPLE則是服務器發來的客戶連接信息
		                                                   //主要用來刷新客戶端的用戶列表
			{
		     parent.list1.clear();
			 while(st.hasMoreTokens())                     //遍歷st取得目前所連接的客戶
				{
			     String str=st.nextToken();
				 parent.list1.addItem(str);
			 }
		 }
		 else if(keyword.equals("MSG"))                   //如果關鍵字是MSG則是服務器傳來的聊天信息
		                                                  //主要用來刷新客戶端聊天信息區將每個客戶的聊天內容顯示出來
			{
		     String usr=st.nextToken();
			 parent.chat_txt.appendText(usr);
			 parent.chat_txt.appendText(st.nextToken("\0"));
			 parent.chat_txt.appendText("\n");
		 }
		 else if(keyword.equals("QUIT"))                //如果關鍵字是QUIT則是服務器關閉的信息
		                                                //用來切斷此次連接
			{
		     System.out.println("Quit");
		     try
		     {parent.listen.stop();
		      parent.listen=null;
		      parent.soc.close();
			  parent.soc=null;
             }catch(IOException e)
             {
             	System.out.println("Error3:"+e);
             	}
			  parent.list1.clear();
			 
			 return;
		 }
	  }

 }     //end of run method
}      //end of Listen inner class


 
}     //end of chatApplet class

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产三级电影在线观看| 一区二区三区四区蜜桃| 日韩伦理免费电影| 蜜臀a∨国产成人精品| 91亚洲国产成人精品一区二三| 欧美精品久久99| 国产精品久久久久影视| 韩国在线一区二区| 欧美一级免费观看| 亚洲在线中文字幕| 99久久精品免费看国产免费软件| 欧美成人aa大片| 午夜激情综合网| 91官网在线观看| 国产精品久久久久久久浪潮网站| 国产一区二区视频在线| 3751色影院一区二区三区| 亚洲综合色婷婷| 一本大道av一区二区在线播放| 国产三级精品视频| 国产呦萝稀缺另类资源| 日韩精品在线看片z| 婷婷六月综合亚洲| 欧美日韩一区不卡| 午夜欧美大尺度福利影院在线看| 99精品国产视频| 亚洲日本在线观看| 97精品视频在线观看自产线路二| 国产精品青草久久| 99久久99久久综合| 亚洲欧美日韩成人高清在线一区| 本田岬高潮一区二区三区| 国产精品视频第一区| 99精品视频一区二区| 中文字幕亚洲精品在线观看 | 色老汉一区二区三区| 国产精品系列在线| 色综合久久久久| 夜夜嗨av一区二区三区网页| 色婷婷久久久亚洲一区二区三区| 亚洲精品国产a| 欧美日韩国产乱码电影| 日本强好片久久久久久aaa| 精品少妇一区二区| 高清不卡一二三区| 一区二区在线免费| 9191精品国产综合久久久久久 | 国产成人av一区二区三区在线 | 成人av资源站| 亚洲免费观看在线视频| 欧美精品xxxxbbbb| 国产精品资源在线看| 日韩一区在线免费观看| 欧美日韩免费观看一区二区三区 | 日韩欧美在线影院| 国产一区二区三区av电影| 亚洲欧洲www| 欧美欧美欧美欧美首页| 久草在线在线精品观看| 国产精品白丝在线| 欧美精品高清视频| 成人午夜短视频| 丝袜美腿亚洲一区二区图片| 26uuu亚洲综合色| 91在线视频在线| 奇米影视7777精品一区二区| 国产午夜精品一区二区| 欧美午夜片在线看| 国产乱色国产精品免费视频| 亚洲精品久久久蜜桃| 亚洲精品一线二线三线无人区| 99热这里都是精品| 国内精品在线播放| 午夜久久久久久久久久一区二区| 欧美高清在线一区| 日韩三级高清在线| 在线视频欧美精品| 国产成人精品免费视频网站| 日韩二区三区四区| 一区二区在线电影| 国产欧美视频一区二区三区| 欧美久久久一区| 91麻豆国产福利在线观看| 国产成人一级电影| 精品综合免费视频观看| 天堂久久久久va久久久久| 亚洲色图制服诱惑| 欧美激情一区二区三区蜜桃视频| 91精品国产综合久久久久久久久久| 91小视频免费观看| 高清成人在线观看| 国产一区不卡精品| 日本少妇一区二区| 婷婷丁香久久五月婷婷| 亚洲欧美日韩精品久久久久| 国产精品系列在线| 欧美激情在线一区二区三区| 日韩色视频在线观看| 91精品国产综合久久福利软件| 色吧成人激情小说| 91在线观看下载| av电影在线观看一区| 成人在线视频一区| 不卡电影一区二区三区| 成人免费视频一区二区| 国产二区国产一区在线观看 | 日产国产欧美视频一区精品| 一区二区三区免费在线观看| 中文字幕亚洲精品在线观看| 亚洲国产高清不卡| 中文字幕精品在线不卡| 欧美国产日韩a欧美在线观看| 久久久久久久久久久黄色| 久久一区二区三区国产精品| 久久亚洲一区二区三区四区| 精品国产99国产精品| 久久综合九色综合欧美亚洲| www久久精品| 久久久精品黄色| 亚洲国产精品高清| 亚洲视频免费在线观看| 伊人婷婷欧美激情| 日韩激情av在线| 极品美女销魂一区二区三区免费| 狠狠色狠狠色综合系列| 成人小视频免费在线观看| 成人国产精品免费观看视频| 99在线视频精品| 欧美在线你懂的| 欧美一级二级三级乱码| 精品久久久久久久久久久久久久久| 日韩欧美久久久| 国产日韩精品久久久| 亚洲精品午夜久久久| 视频一区在线视频| 国产精品一色哟哟哟| 99久精品国产| 欧美精品日韩一本| 国产午夜亚洲精品理论片色戒| 国产精品久久久久久久久免费樱桃| 亚洲另类在线视频| 美女网站在线免费欧美精品| 成人一区二区三区视频| 欧美亚洲禁片免费| 欧美精品一区二区三区蜜臀| 亚洲图片欧美激情| 日韩二区三区四区| bt欧美亚洲午夜电影天堂| 欧美日韩一级大片网址| 国产三级精品视频| 日韩电影在线观看网站| 99riav一区二区三区| 欧美精品一级二级三级| 亚洲国产岛国毛片在线| 亚洲r级在线视频| 成人午夜免费视频| 欧美一级精品大片| 亚洲精品国产无天堂网2021 | 首页国产丝袜综合| 福利电影一区二区三区| 4438x成人网最大色成网站| 中文字幕永久在线不卡| 久久成人18免费观看| 欧美在线观看视频一区二区三区| 国产无一区二区| 日本不卡视频在线观看| 一本久久精品一区二区| 久久久久久久久久久电影| 日日噜噜夜夜狠狠视频欧美人| 99精品在线观看视频| 久久这里只有精品6| 亚洲va欧美va人人爽| 色偷偷久久人人79超碰人人澡| 久久午夜色播影院免费高清 | 国产精品原创巨作av| 欧美日韩国产高清一区| 国产精品久久国产精麻豆99网站| 精品一区免费av| 欧美一区二区三区成人| 亚洲丰满少妇videoshd| 91亚洲精品久久久蜜桃| 国产精品久久久久久久久久久免费看| 麻豆精品新av中文字幕| 欧美日韩在线亚洲一区蜜芽| 亚洲日本一区二区三区| youjizz久久| 中文字幕在线一区免费| 国产aⅴ精品一区二区三区色成熟| 日韩精品一区二区三区中文不卡 | 亚洲精品日韩专区silk| 成人国产在线观看| 国产精品久久久久四虎| 成人在线视频一区| 国产精品高潮呻吟久久| 成人黄色软件下载| 成人免费在线播放视频| youjizz久久| 一区二区三区中文字幕电影 | 日韩国产高清影视| 884aa四虎影成人精品一区|