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

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

?? serverframe.java

?? 簡易聊天工具
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
//package ZHWJBChat;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;
class ServerFrame extends JFrame
{
	JPanel contentPane;							// 定義圖形界面變量
	JMenuBar jMenuBar1 = new JMenuBar();
	JMenu jMenuFile = new JMenu();
	JMenuItem jMenuFileExit = new JMenuItem();
	JMenu jMenuHelp = new JMenu();
	JMenuItem jMenuHelpAbout = new JMenuItem();
	static JLabel statusBar = new JLabel();
	BorderLayout borderLayout1 = new BorderLayout();
	JPanel jPanel1 = new JPanel();
	BorderLayout borderLayout2 = new BorderLayout();
	JLabel jLabel1 = new JLabel();
	static java.awt.List jList1 = new java.awt.List(13);
	JScrollPane scrollpane = new JScrollPane(jList1);
	static Vector clients = new Vector(10);				// 用vector向量數組存儲連接客戶變量
	static ServerSocket server = null;					// 建立服務器socket
	static int active_connects = 0;					// 用來存儲目前連接的客戶數
	static Socket socket = null;
	public static void main(String[] args)
	{
		ServerFrame ServerFrame1=new ServerFrame();			// 實例化一個ServerFrame類
		ServerFrame1.show();
		System.out.println("Server starting ...");
		try 
		{
			server=new ServerSocket(8080);				// 使用端口8080初始化服務器套接字
		}
		catch(IOException e) 
		{
			System.out.println("Error:" + e);
		}
		while(true)
		{
			try 
			{
				socket = server.accept();					// 用來存儲連接上的客戶socket
				if(socket != null) 
				{
			  		System.out.println(socket + "連接");		// 在服務器控制臺打印客戶連接信息
				}
		   	}
		   	catch(IOException e) 
		   	{
				System.out.println("Error:" + e);
		   	}
		   	ClientEchoThread c = new ClientEchoThread(socket);		// 定義并實例化一個ClientEchoThread線程類,對應一個客戶連接
			clients.addElement(c);							// 加入clients數組中
			if(checkName(c)) 									 	
			{			                                          // 調用checkName方法驗證客戶的合法性
				int connum = ++ServerFrame1.active_connects;		// 定義connum來存儲活動連接數
				String constr = "目前有" + connum + "客戶相連";	           // 在狀態欄里顯示連接數
				ServerFrame1.statusBar.setText(constr);
				ServerFrame1.jList1.addItem(c.IP + "連接");	// 將客戶socket信息寫入list框
			    c.start();
			    String s = "SYSTEM:" + c.name + "加入聊天室!";
			    sendClients(s);								                 // 啟動線程
				notifyRoom();					                     // 用notifyRoom方法來監視聊天室連接變化
			}
			else
			{
				c.send("QUIT");
			    disconnect(c);			 
			}			                        
		}
	}
	public ServerFrame()
	{
		try
		{
			jbInit();
		}catch(Exception e) 
		{
	      	e.printStackTrace();
	    }		
	}
	private void jbInit() throws Exception  
	{
	  	contentPane = (JPanel) this.getContentPane();	
	    contentPane.setLayout(borderLayout1);
	    this.setSize(new Dimension(400, 300));
	    this.setTitle("聊天服務器端");
	    statusBar.setText("目前的連接數為:");
	    jMenuFile.setText("File");
	    jMenuFileExit.setText("Exit");
	    jMenuFileExit.addActionListener(new ActionListener()  
	    {
	      	public void actionPerformed(ActionEvent e) 
	      	{
	        	jMenuFileExit_actionPerformed(e);
	      	}
	    });
	    jMenuHelp.setText("Help");
	    jMenuHelpAbout.setText("About");
	    jMenuHelpAbout.addActionListener(new ActionListener()  
	    {
	      	public void actionPerformed(ActionEvent e) 
	      	{
	        	jMenuHelpAbout_actionPerformed(e);
	      	}
	    });
	    jPanel1.setLayout(borderLayout2);
	    jLabel1.setText("服務器端連接客戶");
	    jMenuFile.add(jMenuFileExit);
	    jMenuHelp.add(jMenuHelpAbout);
	    jMenuBar1.add(jMenuFile);
	    jMenuBar1.add(jMenuHelp);
	    this.setJMenuBar(jMenuBar1);
	    contentPane.add(statusBar, BorderLayout.SOUTH);
	    contentPane.add(jPanel1, BorderLayout.CENTER);
	    jPanel1.add(jLabel1,  BorderLayout.NORTH);
	    jPanel1.add(scrollpane, BorderLayout.CENTER);
	}		                                                      // end of jbinit
	public void jMenuFileExit_actionPerformed(ActionEvent e) 
	{		                                               // 退出菜單方法
		sendClients("QUIT");					// 向客戶端發送斷開連接信息
		closeAll();										// 調用closeAll方法關閉所有連接
		System.exit(0);
	}
    public void jMenuHelpAbout_actionPerformed(ActionEvent e) 
    {
      	chatServer_AboutBox dlg = new chatServer_AboutBox(this);
        Dimension dlgSize = dlg.getPreferredSize();
        Dimension frmSize = getSize();
        Point loc = getLocation();
        dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
        dlg.setModal(true);
        dlg.show();
    }

	protected void processWindowEvent(WindowEvent e) 
	{			                                         // 關閉服務器程序要進行的操作
	    super.processWindowEvent(e);
	    if (e.getID() == WindowEvent.WINDOW_CLOSING) 
	    {
	      	jMenuFileExit_actionPerformed(null);
	    }
	}
	public static void notifyRoom()
	{
		String people = "PEOPLE";
		for(int i = 0; i < clients.size(); i++)
		{
			ClientEchoThread c = (ClientEchoThread)clients.elementAt(i);
			people += ":" + c.name + '|' + c.IP;
		}	
		sendClients(people);
	}
	public static synchronized void sendClients(String msg) 
	{	                                                   // 向每個連接的客戶端發送信息
		for(int i = 0; i < clients.size(); i++) 
		{
			ClientEchoThread c = (ClientEchoThread)clients.elementAt(i);
			c.send(msg);
		}
	}
	public static void closeAll()
	{					                               // 關閉所有連接信息
	    while(clients.size() > 0) 
	    {					                           // 遍歷clients數組刪除所有連接客戶信息
		   	ClientEchoThread c = (ClientEchoThread)clients.firstElement();
		   	try
		   	{
		     	c.socket.close();
		   	}
		   	catch(IOException e) 
		   	{
		     	System.out.println("Error:" + e);
		   	}
		   	finally 
		   	{
		     	clients.removeElement(c);
		   	}
		}													
	}														//closeAll方法結束				
	public static boolean checkName(ClientEchoThread newclient) 
	{	                                                     // 檢查連接客戶的socket信息是否合法
	    for(int i = 0; i < clients.size(); i++) 
	    {
		  	ClientEchoThread c = (ClientEchoThread)clients.elementAt(i);
		  	if((c != newclient) && c.equals(newclient.name)) return false;	 
		}
		return true;
	}		                                                   	// end of checkName method
	public static synchronized void disconnect(ClientEchoThread c) 
	{	                                                       // 斷開單個客戶方法
	    try 
	    {
		  	jList1.addItem(c.IP + "斷開連接");			// 在服務器端程序的list框中顯示斷開信息		  													
		  	int connum = --ServerFrame.active_connects;		 // 連接數減1
			String constr = "目前有" + connum + "客戶相連";	           // 刷新狀態欄里的連接數
			statusBar.setText(constr);	
		  	c.send("QUIT");			// 向客戶發送斷開連接信息
		  	//sendClients("SYSTEM:" + c.name + "離開聊天室!");
		  	c.socket.close();
		}
		catch(IOException e) 
		{
		  	System.out.println("Error:" + e);
		}
		finally
		{
		  	clients.removeElement(c);					// 從clients數組中刪除客戶的相關socket信息
		}
	}
	static ClientEchoThread findFromName(String name)
	{
		for(int i = 0; i < clients.size(); i++)
		{
			ClientEchoThread c = (ClientEchoThread)clients.elementAt(i);
			if(name.equals(c.name)) return c;	
		}
		return null;	
	}
	static String findIPFromName(String name)
	{
		for(int i = 0; i < clients.size(); i++)
		{
			ClientEchoThread c = (ClientEchoThread)clients.elementAt(i);
			if(name.equals(c.name)) return c.IP;	
		}
		return null;			
	}					
}
class ClientEchoThread extends Thread 
{						// 定義ClientEchoThread線程類
	Socket socket;								// 存儲一個連接客戶的socket信息
	String name;								// 存儲客戶的連接姓名
	String IP;	
	String netMeetingFlag = "refuse";							// 存儲客戶的IP信息
	BufferedReader dis;						// 接收從客戶端發來的數據流
	PrintWriter ps;							// 向客戶端發送信息的打印流
	public void send(String msg) 
	{				                         // 向客戶端發送信息的方法
		ps.println(msg);							// 打印流發送信息
		ps.flush();
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产九色精品成人porny| 性做久久久久久久久| 99国产一区二区三精品乱码| 亚洲精选在线视频| 日韩欧美成人一区二区| 国产福利一区二区三区| 亚洲日本成人在线观看| 欧美精品一区二区久久久| 成人午夜在线视频| 一区二区三区成人在线视频| 欧美成人vr18sexvr| 色综合久久久网| 国产精品一区二区你懂的| 亚洲欧美另类久久久精品2019| 欧美二区三区91| 91在线视频网址| 成人午夜av在线| 人人狠狠综合久久亚洲| 一区二区理论电影在线观看| 精品国产一区a| 精品噜噜噜噜久久久久久久久试看| 欧洲精品在线观看| 色哟哟亚洲精品| 日本韩国欧美国产| 91美女在线看| 日本电影欧美片| 一本久久精品一区二区| aaa亚洲精品一二三区| av中文字幕一区| 在线国产亚洲欧美| 欧美色图在线观看| 6080日韩午夜伦伦午夜伦| 欧美日韩一区二区在线视频| 7777精品久久久大香线蕉| 日韩一区二区三区在线观看| 884aa四虎影成人精品一区| 欧美日韩中文另类| 日韩免费高清电影| 国产精品欧美综合在线| 一区二区三区免费在线观看| 性欧美疯狂xxxxbbbb| 青青草97国产精品免费观看 | 国产亚洲人成网站| 中文字幕一区二区三区不卡| 亚洲黄网站在线观看| 免费人成网站在线观看欧美高清| 极品少妇一区二区| 91看片淫黄大片一级在线观看| 欧美日韩1区2区| 中文av一区特黄| 婷婷激情综合网| www.久久精品| 精品乱人伦一区二区三区| 一区av在线播放| www.亚洲在线| 日韩视频123| 亚洲制服丝袜在线| 成人午夜精品一区二区三区| 欧美一区二区三区思思人| 亚洲精品高清视频在线观看| 精品在线观看视频| 日韩精品一区二区三区四区| 一级女性全黄久久生活片免费| 国产高清精品网站| 久久久99精品免费观看| 毛片av中文字幕一区二区| 欧美一区二区福利在线| 日韩中文字幕亚洲一区二区va在线 | 精品三级在线看| 午夜精品久久久久久| 欧美日韩一区二区三区不卡| 亚洲图片欧美综合| 日韩三级在线观看| 国产成人精品三级| 国产欧美一区二区精品仙草咪 | 波波电影院一区二区三区| 国产欧美日产一区| av色综合久久天堂av综合| 亚洲午夜日本在线观看| 日韩欧美在线1卡| 乱中年女人伦av一区二区| 久久久久国色av免费看影院| 国产一区二区三区精品视频| 中文字幕乱码日本亚洲一区二区| 国产suv精品一区二区6| 亚洲自拍偷拍麻豆| 久久久久国产精品厨房| 欧美午夜视频网站| 国产一区二区美女| 亚洲一区影音先锋| 国产日产欧美精品一区二区三区| 97精品久久久久中文字幕| 精彩视频一区二区| 亚洲一区二区三区自拍| 久久精品亚洲精品国产欧美kt∨| 67194成人在线观看| 色狠狠综合天天综合综合| 国产一区二区久久| 日韩高清国产一区在线| 亚洲黄色av一区| 亚洲欧洲无码一区二区三区| 欧美另类久久久品| 欧美日韩情趣电影| 欧美性感一类影片在线播放| 国产成人av一区二区| 韩日欧美一区二区三区| 亚洲成人在线免费| 亚洲成国产人片在线观看| 一区二区三区高清不卡| 一区二区三区在线高清| 亚洲激情中文1区| 亚洲国产另类精品专区| 亚洲乱码国产乱码精品精的特点| 亚洲乱码一区二区三区在线观看| 亚洲免费观看高清完整| 午夜成人免费视频| 美女性感视频久久| 精品无人码麻豆乱码1区2区 | 欧美亚洲一区二区在线观看| 91视视频在线观看入口直接观看www | 国产亚洲人成网站| 亚洲视频在线一区观看| 亚洲一级片在线观看| 蜜臀99久久精品久久久久久软件 | 久久成人麻豆午夜电影| 高清国产一区二区| 欧美日韩国产精品成人| 久久久91精品国产一区二区精品 | 亚洲18女电影在线观看| 国产99精品在线观看| 欧美日韩一区二区三区不卡| 中文字幕乱码亚洲精品一区| 午夜视频在线观看一区| 国产精品自拍网站| 91精品国产综合久久久蜜臀粉嫩| 久久久久9999亚洲精品| 同产精品九九九| 色婷婷激情综合| 中文一区在线播放| 午夜国产精品影院在线观看| 91免费看片在线观看| 国产亚洲午夜高清国产拍精品| 一区二区三区91| 成人久久视频在线观看| 精品国产成人系列| 久久99热国产| 欧美一区二区三区思思人| 亚洲一区二三区| 欧美日韩中字一区| 日本视频免费一区| 欧美精品在线一区二区三区| 亚洲一区中文日韩| 在线免费观看一区| 亚洲一区二区三区在线| 91久久精品一区二区二区| 亚洲精品亚洲人成人网在线播放| 99国产精品国产精品毛片| 日本一区二区三区免费乱视频| 国产精品一区免费视频| 国产精品传媒在线| 欧美在线一区二区三区| 亚洲v精品v日韩v欧美v专区| 91精品国产乱码久久蜜臀| 国产精品综合av一区二区国产馆| 国产亚洲精品精华液| 91免费看`日韩一区二区| 亚洲一区在线播放| 精品国产乱码久久久久久免费| 国产成人免费视频精品含羞草妖精| 中文字幕av一区二区三区高 | 美腿丝袜亚洲一区| 欧美韩国日本综合| 欧美精品丝袜久久久中文字幕| 久久丁香综合五月国产三级网站| 国产精品福利影院| 日韩一级大片在线观看| voyeur盗摄精品| 久久99国产精品尤物| 一个色在线综合| 欧美激情在线观看视频免费| 3d成人动漫网站| 欧美色精品在线视频| 高清视频一区二区| 看电影不卡的网站| 亚洲成人精品一区| 国产精品福利影院| 中文字幕成人av| 国产欧美日韩亚州综合| 日韩一区二区免费视频| 欧美视频在线观看一区二区| 99麻豆久久久国产精品免费| 成人午夜视频网站| 国产91高潮流白浆在线麻豆 | 国产精品三级视频| 中文字幕va一区二区三区| 国产精品第五页| 亚洲婷婷国产精品电影人久久| 国产日产欧美一区二区视频| 国产日韩精品一区| 一区二区三区在线影院|