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

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

?? server.java

?? 簡單的QQ聊天。。服務器端可監視客戶端上下線情況
?? JAVA
字號:
package com.chat.server;

import java.io.*;
import java.net.*;
import java.util.*;

import com.chat.constants.ServerConstants;
import com.chat.dto.MsgDTO;

public class Server implements java.lang.Runnable{
	private static ServerFrame serverFrame = new ServerFrame();

	private static List<Client> clients = new ArrayList<Client>();

	private static List<String> userId = new ArrayList<String>();

	private static ServerSocket serverSocket;

	private static boolean start = true;

	private static int port=8888;
	
	public static void main(String[] args) {
		if(args.length!=0){
			port=Integer.parseInt(args[0]);
		}
		new Thread(new Server()).start();
	}

	public void run() {
		try {
			serverSocket = new ServerSocket(port);
			serverFrame.setMessageText("服務器已啟動............");
			while (start) {
				Socket socket = serverSocket.accept();
				Client c = new Client(socket, serverFrame, clients, userId);
				clients.add(c);
				new Thread(c).start();
				serverFrame.setMessageText("目前連接了" + clients.size() + "個客戶端!");
			}
		} catch (BindException e) {
			javax.swing.JOptionPane.showMessageDialog(null, "對不起,服務器已經啟動或端口被占用,程序終止!");
			System.exit(0);
		} catch (Exception ee) {
			ee.printStackTrace();
			System.out.println("其他錯誤……");
		} finally {
			try {
				serverSocket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

class Client implements Runnable {
	private ServerFrame serverFrame;

	private List<Client> clients;

	private List<String> userId;

	private Socket socket;

	private InputStream in;

	private OutputStream out;

	private ObjectInputStream ois;

	private ObjectOutputStream oos;

	private boolean bConnect = true;

	private MsgDTO msgDTO;

	public Client(Socket socket, ServerFrame serverFrame, List<Client> clients,
			List<String> userId) {
		this.serverFrame = serverFrame;
		this.clients = clients;
		this.userId = userId;
		this.socket = socket;
		try {
			if (this.in == null)
				this.in = this.socket.getInputStream();
			if (this.ois == null)
				this.ois = new ObjectInputStream(this.in);

			if (this.out == null)
				this.out = this.socket.getOutputStream();
			if (this.oos == null)
				this.oos = new ObjectOutputStream(this.out);
			this.bConnect = true;
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void send(Object obj) {
		try {
			this.oos.writeObject(obj);
			this.oos.flush();
		} catch (IOException e) {
			// e.printStackTrace();
			System.out.println("對方退出了……");
		}
	}

	private List<String> transferList(List<String> tempList) {
		List<String> list = new ArrayList<String>();
		for (String userId : tempList) {
			list.add(userId);
		}
		return list;
	}

	public void run() {
		Client client;
		try {
			while (bConnect) {
				Object obj = ois.readObject();
				// 如果接收到的是字符串,實際是一個userId的字符串
				if (obj instanceof String) {
					String curUserId = null;
					// 如果此時是請求登陸
					if (obj.toString().indexOf(ServerConstants.LOGIN_REQUEST) > -1) {
						curUserId = obj.toString().split(
								ServerConstants.LOGIN_SPLIT)[1];
						// 如果帳號已經在別的地方登陸過
						if (this.userId.contains(curUserId)) {
							send(ServerConstants.LOGIN_REPEAT);
//							System.out.println("用戶" + curUserId + "試圖重復登陸!");
							serverFrame.setMessageText("用戶" + curUserId + "試圖重復登陸!");
							clients.remove(this);
						} else {
							send(ServerConstants.LOGIN_SUCCESS);
							this.userId.add(0, curUserId);
							serverFrame.setMessageText("用戶" + curUserId + "登陸成功!");
						}
					}
					// 如果此時是注銷
					if (obj.toString().indexOf(ServerConstants.LOGOUT) > -1) {
						curUserId = obj.toString().split(
								ServerConstants.LOGIN_SPLIT)[1];
						this.userId.remove(curUserId);
						serverFrame.setMessageText("用戶" + curUserId + "成功下線!");
					}
					// System.out.println("上線提示成功接收"+obj+"!當前在線人數"+this.userId.size());
					List<String> list = transferList(this.userId);
					for (int i = 0; i < clients.size(); i++) {
						client = clients.get(i);
						client.send(list);
					}
					// System.out.println("向客戶端傳遞在線具體人數成功");
				}
				// 服務器端如果接收到的是信息數據包
				if (obj instanceof MsgDTO) {
					this.msgDTO = (MsgDTO) obj;
//					System.out.println("剩余客戶端數量:" + clients.size() + "個");
//					System.out.println(this.msgDTO.getContent());
					for (int i = 0; i < clients.size(); i++) {
						client = clients.get(i);
						client.send(this.msgDTO);
					}
					this.serverFrame.setMessageText(this.msgDTO.getUserId() + " 對 "
							+ this.msgDTO.getToWhere() + " 說: "
							+ this.msgDTO.getContent());
				}
			}
		} catch (Exception e) {
			// e.printStackTrace();
			clients.remove(this);
			System.out.println("客戶端退出……!");
		} finally {
			try {
				if (ois != null)
					ois.close();
				if (oos != null)
					oos.close();
				if (socket != null)
					socket.close();
			} catch (IOException ex) {
				// ex.printStackTrace();
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美在线观看| 一区二区三区久久| 亚洲精选一二三| 免费观看在线综合色| 成人av网站免费| 日韩三级视频在线看| 亚洲视频中文字幕| 国产成人综合网| 91精品国产综合久久精品app | 热久久久久久久| 99久久精品情趣| 亚洲国产精品一区二区www在线| 美腿丝袜在线亚洲一区| 欧美亚洲禁片免费| 国产精品成人一区二区三区夜夜夜 | 国产精品久久久久三级| 日本不卡123| 欧美日韩成人综合在线一区二区| 国产精品进线69影院| 国产一区二区久久| 日韩一二在线观看| 美女精品自拍一二三四| 欧美制服丝袜第一页| 中文字幕亚洲不卡| 国内精品写真在线观看| 日韩免费成人网| 日韩av中文字幕一区二区三区| 91豆麻精品91久久久久久| 国产精品乱码一区二区三区软件| 国内外精品视频| 精品免费一区二区三区| 亚洲高清在线精品| 欧美日韩高清在线播放| 一区二区三区视频在线看| aaa欧美日韩| 国产精品三级在线观看| 国产成人免费视| 国产午夜精品一区二区三区视频| 久久机这里只有精品| 亚洲精品一区二区三区99| 精品在线免费观看| 久久精品夜色噜噜亚洲a∨| 国产精一区二区三区| 国产午夜精品福利| av亚洲精华国产精华精华| 18欧美乱大交hd1984| 色域天天综合网| 亚洲成人午夜电影| 日韩一区二区视频在线观看| 欧美亚洲图片小说| 亚洲一区在线视频| 欧美老女人第四色| 国内精品国产成人国产三级粉色| 精品国产乱码久久久久久1区2区 | 中文字幕不卡在线| 91亚洲男人天堂| 亚洲成人免费av| 精品久久久网站| av一区二区三区| 中文乱码免费一区二区| 911国产精品| 久久久久久夜精品精品免费| 久久精品亚洲麻豆av一区二区| 欧美日韩亚洲另类| 国产精品二三区| 久久www免费人成看片高清| 韩日欧美一区二区三区| 国产欧美日韩精品在线| 国产一区在线不卡| 国产日韩欧美精品电影三级在线 | 日韩亚洲欧美在线观看| 激情另类小说区图片区视频区| 国产精品丝袜黑色高跟| 欧美三级三级三级| 国产福利不卡视频| 亚洲成年人网站在线观看| 2020日本不卡一区二区视频| 色狠狠色噜噜噜综合网| 开心九九激情九九欧美日韩精美视频电影| 国产欧美日本一区视频| 欧洲视频一区二区| 国产黄色精品网站| 丝袜诱惑制服诱惑色一区在线观看| 久久久久一区二区三区四区| 欧美日韩精品免费观看视频| 国产91在线观看丝袜| 日韩不卡一区二区| 亚洲欧洲无码一区二区三区| 精品国产乱码久久久久久免费| 色系网站成人免费| 国产成人av一区二区三区在线 | 成熟亚洲日本毛茸茸凸凹| 亚洲免费观看高清| 亚洲人精品午夜| 欧美福利视频导航| 日本福利一区二区| 欧美日韩www| 91色.com| 不卡影院免费观看| 国产真实乱偷精品视频免| 午夜久久久久久电影| 亚洲女人的天堂| 国产精品丝袜91| 国产亚洲成aⅴ人片在线观看 | 欧美一卡2卡3卡4卡| 91香蕉视频mp4| 成人免费观看视频| 国产九色sp调教91| 国产麻豆精品在线| 国产在线国偷精品免费看| 免费成人在线播放| 蜜桃av一区二区在线观看| 日韩电影一区二区三区四区| 亚洲制服欧美中文字幕中文字幕| 中文字幕在线不卡一区 | 日韩亚洲欧美综合| 欧美一区二区三区在线视频| 一本色道久久综合精品竹菊| 91香蕉视频在线| 91视频观看视频| 色婷婷国产精品久久包臀| 91浏览器打开| 欧美在线你懂得| 欧美精品丝袜久久久中文字幕| 欧美三级日韩三级| 欧美理论在线播放| 日韩精品资源二区在线| 精品国产免费一区二区三区四区| 精品国产一区久久| 国产欧美日韩精品a在线观看| 国产日韩欧美高清在线| 国产精品女同一区二区三区| 中文字幕一区二区三区色视频| 亚洲欧美日韩电影| 亚洲综合免费观看高清在线观看| 午夜视频一区在线观看| 美女视频黄频大全不卡视频在线播放 | 国产99精品视频| 99久久精品免费| 在线观看免费亚洲| 3d动漫精品啪啪| 国产亚洲美州欧州综合国| 日韩理论片中文av| 亚洲电影在线免费观看| 久久er99精品| av午夜精品一区二区三区| 欧美无乱码久久久免费午夜一区 | 寂寞少妇一区二区三区| av一区二区三区四区| 欧美色综合久久| 久久久亚洲精华液精华液精华液| 国产精品久久久久一区二区三区共 | 国产a精品视频| 在线视频亚洲一区| 欧美一区二区免费视频| 中文字幕av一区二区三区| 伊人开心综合网| 国产一区二区三区免费在线观看| 精品美女被调教视频大全网站| 国产情人综合久久777777| 亚洲欧洲99久久| 精品无人区卡一卡二卡三乱码免费卡| 成人免费视频国产在线观看| 在线成人午夜影院| 国产精品青草久久| 美女国产一区二区三区| 91色在线porny| 精品久久一二三区| 亚洲成人免费av| av电影天堂一区二区在线观看| 欧美一区二区三区免费| 亚洲色图在线视频| 国产精品一区二区三区99| 欧美电影在线免费观看| 国产精品不卡一区二区三区| 韩日av一区二区| 欧美日韩午夜精品| 亚洲欧洲成人精品av97| 国产精品一区二区无线| 在线综合+亚洲+欧美中文字幕| 亚洲精品视频免费看| 国产精品影视网| 欧美一级久久久久久久大片| 一区二区三区日韩精品视频| 国产成人亚洲综合a∨婷婷图片 | 成人综合婷婷国产精品久久免费| 91精品欧美一区二区三区综合在 | 91精品91久久久中77777| 久久久久99精品一区| 免费成人在线影院| 欧美久久久久久久久| 一区二区高清视频在线观看| 9i看片成人免费高清| 国产精品入口麻豆九色| 国产麻豆成人精品| 久久综合九色综合97婷婷| 久久成人免费网| 欧美成人精品福利| 久久精品免费观看| 日韩精品一区二区三区在线观看|