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

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

?? chatserver.java

?? JAVA 聊天室源碼
?? JAVA
字號:
package liaotshi2;

import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import javax.swing.*;


//Code for the AppServer class
public class chatServer extends JApplet  implements Runnable, ActionListener {

	ServerSocket server;
	Socket fromClient;
	Thread serverThread;
	JButton b1, b2;
	JPanel panel;

	public chatServer()	 {
		panel = new JPanel();
		b1 = new JButton("啟動服務器");
		b2 = new JButton("關閉服務器");
		panel.add(b1);
		panel.add(b2);
		b2.setVisible(false);
		b1.addActionListener(this);
		b2.addActionListener(this);
		this.getContentPane().add(panel);
	}
	
	public void startServer() {
		try {
			server = new ServerSocket(7894);
			serverThread = new Thread(this);
			System.out.println("Server started...");
			serverThread.start();
		} catch (Exception e) {
			System.out.println("Cannot start the thread " + e);
		}

	}
	
	public void stopServer() {
		if(server != null) {
			try {
				server.close();
				server = null;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}

	public void run() {
		try {
			while (true) {
				fromClient = server.accept();// 返回客戶套接字
				Client c = new Client(fromClient);
				System.out.println("connectioned...");

			}
		} catch (Exception e) {
			System.out.println("Cannot listen to the client" + e);
		}
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == b1) {
			/*JOptionPane.showMessageDialog(null, "不在聊00——22:00", "警告",
					JOptionPane.ERROR_MESSAGE);*/
			startServer();
			
			b1.setVisible(false);
			b2.setVisible(true);
		} else if(e.getSource() == b2) {
			stopServer();
			b1.setVisible(true);
			b2.setVisible(false);
		}
		
	}

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

class Client extends Thread {
	/*
	 * 為了讓用戶能夠看見其他用戶發送的信息,必須用向量來存儲每個客戶發送的信息, 及存儲其套接字
	 */
	static Vector clients = new Vector(30);// 向量用來存儲每個客戶的套接字,即socket
	PrintStream ps;// 用來發送到套接字的類,即發送給客戶端的類
	String name;
	// To store user name
	// String fromUser;
	Socket socket;
	BufferedReader fromClient;// 用來讀取套接字的類,即從客戶端讀取信息的類

	public void send(StringBuffer msg) // 實現想客戶端發送信息的方法
	{
		ps.println(msg); // 用打印流發送信息
		ps.flush();
	}

	public Client(Socket s) {
		socket = s;
		// Retrieving the clients stream
		try {
			clients.addElement(this);// 每一個客戶登陸時就將其套接字存儲進來

			fromClient = new BufferedReader(new InputStreamReader(socket
					.getInputStream())); // 存儲特定客戶socket的輸入流接受s這個客戶發送到服務器端的信息
			ps = new PrintStream(socket.getOutputStream()); // 存儲特定客戶socket的輸出流發送服務器給s這個客戶的信息
			/*
			 * String info=fromClient.readLine(); //讀取接受來的信息 StringTokenizer
			 * stinfo=new StringTokenizer(info,":");
			 * //用StringTokenizer類來讀取用":"分段字符 String head=stinfo.nextToken();
			 * //head用來存儲類似于關鍵字的頭信息 if(stinfo.hasMoreTokens())
			 * name=stinfo.nextToken(); notifyRoom();
			 */
		} catch (Exception e) {
			System.out.println("Cannot get the client stream" + e);
		}
		this.start();
	}

	public void run() // 線程運行方法
	{
		try {
			String info = fromClient.readLine(); // 讀取接受來的信息
			StringTokenizer stinfo = new StringTokenizer(info, ":"); // 用StringTokenizer類來讀取用":"分段字符
			String head = stinfo.nextToken(); // head用來存儲類似于關鍵字的頭信息
			if (stinfo.hasMoreTokens())
				name = stinfo.nextToken();// 獲得客戶的名字
			name = name.trim();// 去掉空格
			notifyRoom();// 調用發送在線用戶列表給客戶端的方法
			welcomeNew();// 調用歡迎客戶登陸的方法
		} catch (Exception e2) {
		}

		while (true)// 循環一直監聽客戶短發送過來的內容
		{
			String line = null;
			try {
				line = fromClient.readLine(); // 讀取客戶端發來的數據流

			} catch (IOException e) {
				// System.out.println("Error"+e);
				disconnect();

				return;
			}

			/*
			 * if(socket==null) //客戶已離開 { disconnect(); notifyRoom(); return; }
			 */
			/*
			 * 因為客戶短發送過來內容很多,包括注冊信息,公聊的內容,私聊的內容等等,
			 * 為了區分這些內容需要用StringTokenizer這個類來實現
			 */
			StringTokenizer st = new StringTokenizer(line, ":");// 將從客戶端讀取過來的內容進行分類
			String keyword = st.nextToken();

			if (keyword.equals("MSG")) // 如果關鍵字是MSG則是客戶端發來的聊天信息
			{
				StringBuffer msg = new StringBuffer("MSG:"); // 在服務器端再重新建立一個字符緩沖
				String message = st.nextToken();
				msg.append(name + message);
				// msg.append(st.nextToken());
				sendClients(msg); // 再將某個客戶發來的聊天信息發送到每個連接客戶的聊天欄中
			}

			if (keyword.equals("PRIVATE")) // 如果客戶端發送過來的是private,則發送私聊的內容回去
			{
				StringBuffer privateMsg = new StringBuffer("PRIVATE:");
				String clientName = st.nextToken();
				String receiver = st.nextToken();

				// if(st.hasMoreTokens())
				String pm = st.nextToken();
				String all = clientName + ":" + receiver + ":" + pm;
				privateMsg.append(all);
				sendClients(privateMsg);

			}
			/*
			 * else if(keyword.equals("QUIT")) //如果關鍵字是QUIT則是客戶端發來斷開連接的信息 {
			 * 
			 * disconnect(); //服務器斷開與這個客戶的連接 notifyRoom();
			 * //繼續監聽聊天室并刷新其他客戶的聊天人名list }
			 */
		}
	}

	public synchronized void disconnect() // 實現斷開單個客戶的方法
	{

		try {

			clients.removeElement(this);
			notifyRoom();
			StringBuffer quit = new StringBuffer("QUIT:");
			quit.append(name);
			sendClients(quit);
			socket.close();
		} catch (Exception e1) {
		}

	}

	public synchronized void sendClients(StringBuffer msg) // 實現sendClients方法專用來向每個連接的客戶端發送信息
	{
		for (int i = 0; i < clients.size(); i++)// 遍歷向量,即將每一個客戶套接字里面的內容返回給每一個客戶端客戶端
		{
			Client c = (Client) clients.elementAt(i);
			c.send(msg);
		}
	}

	public void notifyRoom() // 用來監視連接信息,不斷刷新clients數組并刷新客戶端用戶列表信息
	{
		StringBuffer people = new StringBuffer("PEOPLE");
		// String welcome="歡迎"+name+"的大駕光臨";
		for (int i = 0; i < clients.size(); i++) {
			Client c = (Client) clients.elementAt(i);
			people.append(":" + c.name);

		}
		sendClients(people); // 用sendClients方法向客戶端發送信息
	}

	public void welcomeNew() // 用來發送歡迎信息的方法
	{
		StringBuffer welcome = new StringBuffer("WELCOME:");
		String textWelcome = "歡迎" + name + "的大駕光臨";
		welcome.append(textWelcome);
		sendClients(welcome);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美激情一区二区| 亚洲乱码日产精品bd| 亚洲天堂成人在线观看| 五月综合激情网| 99国产麻豆精品| 精品久久免费看| 偷拍自拍另类欧美| 在线观看亚洲精品| 国产精品色噜噜| 欧美一级在线免费| 制服丝袜亚洲网站| 亚洲精品视频免费看| 成人欧美一区二区三区白人| 美美哒免费高清在线观看视频一区二区 | 成人av免费观看| 日韩一区二区电影| 丝袜亚洲另类丝袜在线| 91高清在线观看| 亚洲免费伊人电影| 色综合久久久网| 国产精品毛片a∨一区二区三区| 九色综合国产一区二区三区| 911精品产国品一二三产区| 亚洲最新视频在线观看| 日本乱人伦aⅴ精品| 亚洲欧洲日本在线| 91香蕉视频mp4| 专区另类欧美日韩| av激情亚洲男人天堂| 国产女主播一区| 国产.精品.日韩.另类.中文.在线.播放| 日韩丝袜情趣美女图片| 日韩vs国产vs欧美| 欧美一区二区三区爱爱| 日韩高清不卡一区二区三区| 欧美福利视频导航| 日韩高清不卡一区二区| 欧美一级久久久| 美女一区二区视频| 欧美精品一区二区三区在线| 韩国v欧美v亚洲v日本v| 国产亚洲欧美日韩在线一区| 国产成人精品aa毛片| 中文字幕一区三区| 欧美性视频一区二区三区| 亚洲综合精品自拍| 日韩亚洲欧美在线| 国产精品亚洲一区二区三区妖精| 国产日韩精品一区二区三区| 99精品桃花视频在线观看| 一区二区在线观看视频在线观看| 在线一区二区视频| 日本女优在线视频一区二区| 久久综合久久久久88| 成人国产精品免费网站| 一区二区高清在线| 欧美一区二区精品在线| 国产成人综合在线| 亚洲欧美另类图片小说| 日韩欧美在线网站| 成人自拍视频在线| 亚洲va中文字幕| 久久精品网站免费观看| 色婷婷一区二区三区四区| 日韩和欧美一区二区| 国产亚洲婷婷免费| 欧美性生活大片视频| 国产一区二区在线影院| 一区二区视频在线| 日韩欧美在线网站| 色婷婷精品久久二区二区蜜臂av| 麻豆精品视频在线观看| 国产精品视频你懂的| 这里只有精品视频在线观看| 成人性生交大片免费| 亚洲123区在线观看| 国产女人18水真多18精品一级做| 欧美综合天天夜夜久久| 国产福利精品一区二区| 日韩国产欧美在线播放| 欧美国产丝袜视频| 精品久久国产老人久久综合| 99精品久久只有精品| 久久se精品一区二区| 一级中文字幕一区二区| 国产日韩欧美a| 欧美大尺度电影在线| 欧洲一区二区三区在线| 成人丝袜高跟foot| 激情综合色综合久久综合| 一卡二卡三卡日韩欧美| 中文字幕精品三区| 精品入口麻豆88视频| 欧美婷婷六月丁香综合色| 成人三级伦理片| 精品亚洲欧美一区| 日韩激情av在线| 亚洲高清中文字幕| 亚洲免费三区一区二区| 中文字幕国产精品一区二区| 久久综合九色欧美综合狠狠| 91精品国产综合久久蜜臀| 色综合久久中文综合久久97 | 99久久精品免费看国产| 激情图区综合网| 麻豆国产欧美一区二区三区| 天天操天天综合网| 亚洲韩国一区二区三区| 亚洲成a人v欧美综合天堂下载| 一区二区三区国产精华| 一区二区三区在线免费观看| 国产精品乱码人人做人人爱| 国产亚洲欧美日韩日本| 国产喷白浆一区二区三区| 久久久亚洲精华液精华液精华液| 精品日韩在线一区| www久久精品| 中文字幕电影一区| 自拍偷拍亚洲激情| 亚洲精品免费在线| 夜夜嗨av一区二区三区网页| 一区二区成人在线| 日日夜夜精品视频天天综合网| 午夜电影网一区| 久久国产精品72免费观看| 久久精品国产网站| 国产精品911| 成人性生交大合| 在线观看一区不卡| 欧美一级片在线看| 久久亚洲春色中文字幕久久久| 国产三级欧美三级日产三级99| 国产精品护士白丝一区av| 1000部国产精品成人观看| 一区二区三区不卡在线观看 | 国产盗摄一区二区三区| 成人国产精品视频| 欧美曰成人黄网| 日韩欧美国产电影| 中文字幕欧美国产| 亚洲第一激情av| 国产一区二区h| av不卡一区二区三区| 欧美日韩视频在线第一区| 精品精品国产高清一毛片一天堂| 国产日产欧美一区二区视频| 亚洲制服丝袜在线| 狠狠色综合色综合网络| 91在线一区二区三区| 欧美嫩在线观看| 中文字幕精品综合| 日本亚洲欧美天堂免费| 国产成人午夜精品影院观看视频| 色呦呦网站一区| 精品国产一区二区三区四区四| 国产精品国模大尺度视频| 日韩成人精品在线| a级高清视频欧美日韩| 欧美精品vⅰdeose4hd| 久久久99精品免费观看| 亚洲午夜激情av| av不卡在线播放| 精品国产乱码久久久久久老虎| 亚洲色图色小说| 国产精品一区免费在线观看| 欧美日韩视频在线一区二区| 国产精品视频观看| 日本强好片久久久久久aaa| 色婷婷综合久久久久中文一区二区| 欧美mv日韩mv亚洲| 亚洲国产日韩一级| 一本色道久久综合亚洲91 | 成人教育av在线| 日韩午夜激情视频| 亚洲最大色网站| 99久久国产免费看| 国产日韩精品一区二区浪潮av| 美女一区二区视频| 678五月天丁香亚洲综合网| 亚洲日本欧美天堂| 成人动漫一区二区三区| 欧美mv日韩mv国产| 蜜臀久久99精品久久久久宅男| 在线看不卡av| 亚洲天堂2016| 99久久精品国产导航| 亚洲国产精品99久久久久久久久| 国产在线精品免费av| 日韩一区二区免费电影| 亚洲夂夂婷婷色拍ww47| 97久久人人超碰| 中文字幕精品三区| av在线一区二区三区| 中文字幕 久热精品 视频在线| 狠狠v欧美v日韩v亚洲ⅴ| 欧美一级片在线| 看电影不卡的网站| 精品国精品国产尤物美女| 国产主播一区二区| 国产欧美久久久精品影院|