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

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

?? server.java

?? 一個用純java語言 寫的 QQ 服務器 端
?? JAVA
字號:
/**
 * QQ聊天室服務器端
 */
import java.net.*;
import java.io.*;
import java.util.*;

public class Server implements Protocol {
	/*
	 * 用戶名存入key,線程存入對應value
	 */
	private static Map users = new HashMap();

	/**
	 * 用戶線程類,每個用戶一個線程
	 */
	static class UserThread extends Thread {
		private Socket s;

		private String username = "";

		private PrintWriter out;

		private static int online;// 統計在線人數

		private static String lock = "";

		public UserThread(Socket s) {
			this.s = s;
		}

		public void run() {
			try {
				/*
				 * 創建流
				 */
				InputStream is = s.getInputStream();
				InputStreamReader ir = new InputStreamReader(is, "GBK");
				// java.nio.charset.Charset.defaultCharset());
				BufferedReader in = new BufferedReader(ir);
				OutputStream os = s.getOutputStream();
				OutputStreamWriter or = new OutputStreamWriter(os, "GBK");
				out = new PrintWriter(or);
				out.println(VERSION);
				out.flush();
				/*
				 * 判斷版本是否過期
				 */
				if (!in.readLine().equals(VERSION)) {
					throw new Exception("版本過期");
				}
				this.username = in.readLine();
				synchronized (lock) {
					/*
					 * 讀取用戶名,并判斷是否已經存在
					 */
					if (isExist(this.username)) {
						throw new ExistException();
					}
					/*
					 * 登陸成功
					 */
					out.println(SYSTEM_MSG);
					out.flush();
					/*
					 * 通知所有人有新用戶登陸
					 */
					sendAll(SYSTEM_MSG + ADD_USER + this.username);
					/*
					 * 刷新在線人數
					 */
					System.out.print("\rOnline:" + ++online);
					/*
					 * 給本線程用戶發送在線用戶列表
					 */
					listAll();
					/*
					 * 將本用戶加入集合
					 */
					users.put(this.username, this);
				}
				String msg = "";
				String touser = "All";
				while (!s.isClosed()) {
					while (!s.isClosed() && (msg = in.readLine()) != null
							&& msg.length() > 0) {
						/*
						 * 收到用戶退出的系統信息,刪除集合中對應項,通知所有用戶
						 */
						if (msg.startsWith(SYSTEM_MSG + USER_LOGOUT)) {
							synchronized (lock) {
								users.remove(this.username);
							}
							sendAll(SYSTEM_MSG + DELETE_USER + this.username);
							s.close();
							System.out.print("\rOnline:" + --online + " ");
						}
						/*
						 * 收到聊天信息,解析出發送對象和信息內容,并發送
						 */
						else {
							touser = msg.substring(0, msg.indexOf(NAME_END));
							msg = msg.replaceFirst(touser + NAME_END, "");
							send(msg, touser);
						}
					}
				}
			}
			/*
			 * 登陸時出現用戶名已存在情況,通知用戶
			 */
			catch (ExistException e) {
				out.println(SYSTEM_MSG + USER_EXIST);
				out.flush();
			} catch (Exception e) {
			} finally {
				try {
					s.close();
				} catch (Exception e) {
				}
			}
		}

		/**
		 * 發送信息給所有用戶
		 */
		private void sendAll(String msg) {
			Set s = users.keySet();
			Iterator it = s.iterator();
			while (it.hasNext()) {
				UserThread t = (UserThread) users.get(it.next());
				if (t != this)
					t.sendUser(msg);
			}
		}

		/**
		 * 給本線程發送在線用戶列表
		 */
		private void listAll() {
			Set s = users.keySet();
			Iterator it = s.iterator();
			while (it.hasNext()) {
				this.sendUser(SYSTEM_MSG + EXIST_USERS + it.next());
			}
		}

		/**
		 * 判斷用戶名是否已經有人使用
		 */
		private boolean isExist(String name) {
			Set s = users.keySet();
			Iterator it = s.iterator();
			while (it.hasNext()) {
				if (name.equals((String) it.next())) {
					return true;
				}
			}
			return false;
		}

		/**
		 * 給本線程對應的用戶發信息
		 */
		private void sendUser(String msg) {
			out.println(msg);
			out.flush();
			// System.out.println("to " + this.username + ": " + msg);// 調試用代碼
		}

		/**
		 * 給指定對象發送信息
		 */
		private void send(String msg, String touser) {
			/*
			 * 調用相應函數,給所有人發信息時
			 */
			if (touser.equals("All")) {
				sendAll(this.username + NAME_END + msg);
				return;
			}
			/*
			 * 根據發送目標的名字獲得相應線程,調用目標線程的函數給目標發送信息
			 */
			if (users.containsKey(touser))// 加判斷,防止用戶已經離線
				((UserThread) users.get(touser)).sendUser(MSG_FROM
						+ this.username + NAME_END + msg);
		}
	}

	/**
	 * 主方法:啟動服務器
	 */
	public static void main(String[] args) {
		/*
		 * 根據參數的情況,獲得端口號,無效時使用默認值,并返回相應信息
		 */
		int port = Integer.parseInt(DEFAULT_PORT);
		if (args.length > 0) {
			int newport;
			try {
				newport = Integer.parseInt(args[0]);
				/*
				 * 無效端口
				 */
				if (newport > 65535 || newport < 0) {
					System.out.println("The port " + newport + " is invalid.");
				}
				/*
				 * 操作系統預留端口
				 */
				else if (newport <= 1024) {
					System.out.println("The port 0~1024 is not allowed.");
				} else {
					port = newport;
				}
			}
			/*
			 * 不能轉換成整數的參數
			 */
			catch (NumberFormatException e) {
				System.out.println("Invalid port number!");
			}
		}
		try {
			ServerSocket ss = new ServerSocket(port);
			System.out.print("Server is running.\nPort:" + port + "\nOnline:0");
			while (true) {
				Socket s = ss.accept();
				Thread t = new UserThread(s);
				t.start();
			}
		}
		/*
		 * 端口綁定失敗
		 */
		catch (IOException e) {
			System.out.println("Failed to bind " + port + "port.");
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视视频在线观看入口直接观看www | 日本成人在线看| 国产精品美女久久久久久2018| 精品日韩一区二区三区免费视频| 色婷婷av一区二区三区大白胸| 国产丶欧美丶日本不卡视频| 国产精品亚洲一区二区三区妖精 | 欧洲视频一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 成人免费三级在线| 波多野结衣精品在线| 国产成人精品午夜视频免费| 国产成人在线色| 成人午夜免费视频| 日本韩国一区二区| 欧美日韩一级二级三级| 欧美人妖巨大在线| 26uuu国产一区二区三区| 久久久精品2019中文字幕之3| 欧美大肚乱孕交hd孕妇| 国产日韩精品一区二区三区 | 亚洲日本在线a| 亚洲视频一区二区免费在线观看| 亚洲乱码中文字幕| 无吗不卡中文字幕| 国内精品视频一区二区三区八戒| 韩国中文字幕2020精品| zzijzzij亚洲日本少妇熟睡| 一本一道波多野结衣一区二区| 欧美老肥妇做.爰bbww| 精品精品国产高清一毛片一天堂| 日本一区二区三区电影| 亚洲一区二区三区中文字幕| 日本午夜精品视频在线观看| 国产精品69久久久久水密桃| 色一区在线观看| 666欧美在线视频| 日本一区二区三区四区在线视频| 亚洲一二三区视频在线观看| 免费精品视频在线| 972aa.com艺术欧美| 欧美一级二级三级蜜桃| 国产精品久久久久影院| 日韩二区三区在线观看| 成人短视频下载| 91精品在线免费观看| 国产精品免费aⅴ片在线观看| 香港成人在线视频| 成人激情av网| 精品国产乱码久久久久久牛牛| 亚洲激情男女视频| 成人亚洲一区二区一| 欧美一区二区在线播放| 亚洲三级在线免费观看| 国产成人99久久亚洲综合精品| 91九色02白丝porn| 国产精品久久三区| 国产乱妇无码大片在线观看| 欧美男人的天堂一二区| 中文字幕中文字幕中文字幕亚洲无线| 蜜臀99久久精品久久久久久软件| 在线观看国产91| 亚洲欧洲日产国产综合网| 久久精品国产澳门| 91精品国产综合久久福利 | 日韩天堂在线观看| 亚洲综合视频在线观看| 99天天综合性| 国产欧美精品一区| 精品一区二区日韩| 日韩欧美成人激情| 奇米综合一区二区三区精品视频| 在线观看www91| 亚洲一区二区三区四区在线观看| 色综合欧美在线| 亚洲欧美一区二区三区极速播放 | 视频在线在亚洲| 欧美熟乱第一页| 亚洲高清在线视频| 欧美色老头old∨ideo| 亚洲精品大片www| 91麻豆精品视频| 亚洲男人的天堂在线aⅴ视频| www.欧美日韩| 日韩理论在线观看| 色综合天天综合在线视频| 亚洲柠檬福利资源导航| 成人高清伦理免费影院在线观看| 中文字幕av不卡| 91免费版在线看| 艳妇臀荡乳欲伦亚洲一区| 欧洲亚洲国产日韩| 五月婷婷综合在线| 91精品国产91久久久久久最新毛片 | 91九色02白丝porn| 午夜精品一区二区三区三上悠亚| 7777女厕盗摄久久久| 极品美女销魂一区二区三区免费| 久久人人爽人人爽| 成人免费视频视频在线观看免费| 亚洲三级在线免费观看| 欧美三区在线视频| 狠狠狠色丁香婷婷综合激情| 国产女主播视频一区二区| 91麻豆成人久久精品二区三区| 亚洲制服欧美中文字幕中文字幕| 欧美丰满一区二区免费视频| 蓝色福利精品导航| 国产精品三级视频| 欧美精品欧美精品系列| 国产一区欧美二区| 亚洲一区二区黄色| 国产日本欧美一区二区| 在线日韩av片| 国产乱子伦视频一区二区三区 | 91亚洲精品久久久蜜桃网站| 亚洲二区在线视频| 中文字幕高清一区| 67194成人在线观看| 不卡的电影网站| 青青草一区二区三区| 国产精品久久久久久久久动漫| 欧美喷潮久久久xxxxx| 成人免费av在线| 奇米一区二区三区av| 中文字幕亚洲综合久久菠萝蜜| 91精品国产高清一区二区三区 | 成人h动漫精品一区二| 秋霞成人午夜伦在线观看| 亚洲色图都市小说| 国产亚洲va综合人人澡精品| 色婷婷综合久久久中文字幕| 国内精品伊人久久久久av一坑| 亚洲va韩国va欧美va| 国产精品久久久久三级| 精品国产凹凸成av人导航| 欧美亚洲高清一区| www.色综合.com| 国产成a人亚洲精品| 国产在线精品免费av| 国产一区二区三区国产| 亚洲va中文字幕| 一区二区成人在线| 亚洲欧洲日产国码二区| 久久精品日韩一区二区三区| 日韩欧美综合在线| 欧美精品三级日韩久久| 欧美美女激情18p| 91啪亚洲精品| 99re这里只有精品视频首页| av综合在线播放| 成人精品一区二区三区中文字幕| 国产在线精品一区二区三区不卡| 免费亚洲电影在线| 日本不卡高清视频| 天天综合日日夜夜精品| 五月婷婷综合在线| 青草国产精品久久久久久| 蜜臀a∨国产成人精品| 奇米四色…亚洲| 久久99久久99小草精品免视看| 久久精品国产成人一区二区三区 | 亚洲夂夂婷婷色拍ww47| 亚洲乱码日产精品bd| 樱桃视频在线观看一区| 亚洲电影视频在线| 蜜桃视频第一区免费观看| 激情综合色播五月| 国产美女久久久久| 粉嫩嫩av羞羞动漫久久久| 99精品热视频| 欧美日韩mp4| 精品久久久久久久久久久久久久久 | 欧美日韩卡一卡二| 日韩一级片在线观看| 精品粉嫩aⅴ一区二区三区四区| 久久久久久免费网| 成人免费一区二区三区在线观看| 亚洲欧洲成人精品av97| 亚洲成人av一区二区| 韩国欧美一区二区| 色综合天天综合狠狠| 欧美人xxxx| 欧美激情综合网| 一区二区三区影院| 狠狠色狠狠色综合系列| 9久草视频在线视频精品| 欧美精品丝袜中出| 国产欧美日韩视频在线观看| 一区二区三区四区高清精品免费观看| 蜜桃av一区二区三区| 高清久久久久久| 91精品国产综合久久久久久久 | 国产真实乱对白精彩久久| 99久久精品国产网站| 日韩精品在线一区| 一区二区三区蜜桃| 国内一区二区视频| 69久久99精品久久久久婷婷| 成人欧美一区二区三区白人 |