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

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

?? chatserver.java

?? 1、 聊天室的實現
?? JAVA
字號:
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.Rectangle;
import java.awt.TextArea;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;

import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Enumeration;
import java.util.Hashtable;

import javax.swing.JOptionPane;
import javax.swing.UIManager;

/*  
 * 
 * 
 */
public class ChatServer extends Frame
{
	final static int PORT = 1234; // Server Socket的監聽端口

	// TODO
	// static int userCount = 0;

	private Panel panel = null;

	private static Label label = null;

	static TextArea msgArea = null;

	/**
	 * This method initializes panel
	 * 
	 * @return java.awt.Panel
	 */
	private Panel getPanel()
	{
		if (panel == null)
		{
			label = new Label();
			label.setBounds(new Rectangle(100, 4, 250, 24));
			label.setFont(new Font("Dialog", Font.PLAIN, 16));
			label.setText("服務器監視器");
			panel = new Panel();
			panel.setLayout(null);
			panel.setBounds(new Rectangle(4, 32, 408, 213));
			panel.add(label, null);
			panel.add(getTextArea(), null);
		}
		return panel;
	}

	/**
	 * This method initializes textArea
	 * 
	 * @return java.awt.TextArea
	 */
	private TextArea getTextArea()
	{
		if (msgArea == null)
		{
			msgArea = new TextArea();
			msgArea.setBounds(new Rectangle(8, 28, 391, 172));
			msgArea.setEditable(false);
		}
		return msgArea;
	}

	public ChatServer()
	{
		super();
		this.setLayout(null);
		this.setSize(418, 251);
		this.setTitle("聊天室服務器監視器");
		this.setVisible(true);
		this.add(getPanel(), null);
		this.setResizable(false);
		this.addWindowListener(new java.awt.event.WindowAdapter()
		{
			public void windowClosing(java.awt.event.WindowEvent e)
			{
				System.exit(0);
			}
		});
	}

	public static void main(String args[])
	{
		ServerSocket server = null;
		Socket user = null; // 對于一個用戶會啟動一個服務線程
		Hashtable userList = new Hashtable(); // 保存用戶列表

		try
		{
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		ChatServer myserver = new ChatServer(); // 實例化一個chatServer類
		msgArea.append("Server starting ...\n");

		try
		{
			server = new ServerSocket(PORT);// 設置監聽端口
			if (server != null)
			{
				msgArea
						.append("The server is listening on port " + PORT
								+ "\n");

			}
		} catch (IOException e)
		{
			// TODO 自動生成 catch 塊
			// e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Socket連接失敗", "服務器運行錯誤",
					JOptionPane.ERROR_MESSAGE);
			System.exit(0);
		}
		while (true)
		{

			try
			{
				user = server.accept();// 服務器接到一個用戶的socket請求
			} catch (IOException e)
			{
				// TODO 自動生成 catch 塊
				e.printStackTrace();
			}
			if (user != null)
			{
				InetAddress address = user.getInetAddress(); // 獲取用戶的IP地址

				// 啟動一個服務線程為該用戶服務
				ServerThreadForUser userThread = new ServerThreadForUser(user,
						userList, address, msgArea);
				userThread.start();

			} else
			// 異常情況
			{
				msgArea.append("Error in accept user!\n");
				continue;
			}

		}
	}
}

/*
 * 該線程接收用戶端socket的信息并反饋
 * 
 */
class ServerThreadForUser extends Thread
{
	String name = null, nickName = null;

	Socket socket = null;

	File file = null;

	DataOutputStream out = null;

	DataInputStream in = null;

	Hashtable userList = null;

	TextArea msgArea = null;

	InetAddress address = null;

	ServerThreadForUser(Socket userSocket, Hashtable list, InetAddress address,
			TextArea msgArea)
	{
		userList = list;
		socket = userSocket;
		this.address = address;
		this.msgArea = msgArea;

		try
		{
			in = new DataInputStream(socket.getInputStream());// 用戶socket寫入
			out = new DataOutputStream(socket.getOutputStream()); // 
		} catch (IOException e)
		{
			// TODO 自動生成 catch 塊
			e.printStackTrace();
		}
	}

	public void run()
	{

		while (true)
		{
			String info = null;
			try
			{
				info = in.readUTF();
				if (info.startsWith("姓名:"))
				{
					name = info.substring(info.indexOf(":") + 1, info
							.indexOf("昵稱"));
					nickName = info.substring(info.lastIndexOf(":") + 1);

					if (userList.containsKey(name) == false) // 用戶名不可重名
					{
						msgArea.append("用戶:" + name + " 進入聊天室(IP:" + address
								+ ")\n");

						userList.put(name, this); // 可以聊天,加入user list
						out.writeUTF("可以聊天:");
						Enumeration userEnum = userList.elements();
						while (userEnum.hasMoreElements())
						{
							ServerThreadForUser userThread = (ServerThreadForUser) userEnum
									.nextElement();
							userThread.out.writeUTF("聊天者:" + name + "昵稱:"
									+ nickName);

							if (userThread != this) // 非本用戶
							{
								out.writeUTF("聊天者:" + userThread.name + "昵稱:"
										+ userThread.nickName);
							}
						}

					} else
					// 已經有這個用戶?
					{
						out.writeUTF("不可以聊天:");
					}
				} else if (info.startsWith("公共聊天內容:"))
				{
					String pubMsg = info.substring(info.indexOf(":") + 1);
					Enumeration userEnum = userList.elements();
					while (userEnum.hasMoreElements())
					{
						((ServerThreadForUser) userEnum.nextElement()).out
								.writeUTF("聊天內容:" + pubMsg);
					}
				} else if (info.startsWith("用戶離開:"))
				{
					Enumeration userEnum = userList.elements();
					while (userEnum.hasMoreElements())
					{
						try
						{
							ServerThreadForUser userThread = (ServerThreadForUser) userEnum
									.nextElement();
							if (userThread != this && userThread.isAlive())
							{
								userThread.out.writeUTF("用戶離線:" + name);
							}
						} catch (IOException e)
						{
						}
					}
					userList.remove(name); // 清除該用戶在user list中的相應項
					socket.close();
					msgArea.append("用戶:" + name + " 離開了\n");
					break;
				}
			} catch (IOException e)
			{ // 對于異常的處理,用戶離線
				Enumeration userEnum = userList.elements();
				while (userEnum.hasMoreElements())
				{
					ServerThreadForUser userThread = (ServerThreadForUser) userEnum
							.nextElement();
					if (userThread != this && userThread.isAlive())
					{
						try
						{
							userThread.out.writeUTF("用戶離線:" + name);
						} catch (IOException e1)
						{
							// TODO 自動生成 catch 塊
							e1.printStackTrace();
						}
					}

				}
				if (name != null)
					userList.remove(name);
				try
				{
					socket.close();
					in.close();
					out.close();
				} catch (IOException e1)
				{
					// TODO 自動生成 catch 塊
					e1.printStackTrace();
				}
				msgArea.append("用戶:" + name + " 離開了\n");
				break;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲视频一区二区| 国产精品久久久久久妇女6080| 久久精品综合网| 亚洲精品视频一区二区| 精品午夜久久福利影院| 精品视频免费看| **网站欧美大片在线观看| 久久aⅴ国产欧美74aaa| 欧美精品一二三四| 亚洲精品国产一区二区三区四区在线| 国产毛片精品一区| 91精品福利在线一区二区三区| 亚洲另类一区二区| 成人午夜碰碰视频| 日韩色在线观看| 丝袜脚交一区二区| 91福利在线观看| 国产精品乱码久久久久久| 国产自产v一区二区三区c| 欧美一区日韩一区| 日韩精品电影在线| 欧美午夜电影网| 亚洲国产视频在线| 在线免费观看成人短视频| 日韩毛片一二三区| a4yy欧美一区二区三区| 国产精品久久久久影院| 国产69精品久久久久毛片| 国产午夜精品一区二区| 国产一区二区三区免费观看| 精品国产伦一区二区三区观看方式| 日本欧美一区二区在线观看| 91精品国产麻豆| 蓝色福利精品导航| 久久婷婷一区二区三区| 国产盗摄女厕一区二区三区| 欧美经典一区二区三区| 大陆成人av片| 亚洲乱码中文字幕| 欧美四级电影在线观看| 婷婷久久综合九色综合绿巨人| 欧美日韩三级视频| 美女网站在线免费欧美精品| 精品国产一区二区三区久久久蜜月 | 91色.com| 亚洲综合另类小说| 欧美一级艳片视频免费观看| 欧美aaaaaa午夜精品| 久久综合狠狠综合| 福利电影一区二区三区| 一区二区三区波多野结衣在线观看| 色婷婷av一区二区三区之一色屋| 亚洲444eee在线观看| 精品日韩一区二区三区| 粉嫩高潮美女一区二区三区 | 久久久午夜精品| 99久久婷婷国产| 日韩极品在线观看| 久久午夜羞羞影院免费观看| 99久久精品国产观看| 亚洲国产一区视频| 久久久久久一二三区| 欧美一级精品在线| 国产真实乱对白精彩久久| 精品免费视频.| 懂色av一区二区夜夜嗨| 亚洲一线二线三线久久久| 日韩欧美久久一区| 91在线高清观看| 日韩精品欧美精品| 中文字幕一区二区三区在线观看| 精品1区2区3区| 国产成人综合自拍| 五月婷婷久久丁香| 国产精品欧美一区喷水| 91精品国产综合久久婷婷香蕉 | 欧美精品一区二区三区久久久| av电影在线观看一区| 日韩1区2区3区| 亚洲蜜臀av乱码久久精品蜜桃| 日韩精品一区二区三区四区视频| 色美美综合视频| 国产一区二区电影| 日韩精品亚洲专区| 一区二区免费在线播放| 中文成人综合网| 亚洲精品一区二区三区精华液 | 在线播放/欧美激情| 成人国产精品免费观看| 麻豆专区一区二区三区四区五区| 亚洲女人的天堂| 欧美国产精品中文字幕| 精品久久久久一区二区国产| 在线观看视频一区| 粉嫩aⅴ一区二区三区四区五区| 日韩激情视频网站| 亚洲综合一区二区三区| 国产精品国产三级国产普通话蜜臀 | 亚洲第一成人在线| 中文字幕亚洲一区二区av在线| 欧美电影免费观看高清完整版在线| 欧美在线视频你懂得| 色婷婷av一区二区三区之一色屋| 成人一道本在线| 国产69精品久久99不卡| 国产精品一区二区三区网站| 另类小说一区二区三区| 日本vs亚洲vs韩国一区三区二区| 亚洲一区二区精品3399| 亚洲精品视频在线| 亚洲最大色网站| 一区二区日韩电影| 亚洲一区二区三区自拍| 亚洲一区视频在线| 亚洲成人精品一区| 五月天精品一区二区三区| 亚洲国产视频直播| 日韩电影网1区2区| 美女任你摸久久| 久久99精品国产麻豆不卡| 国产乱人伦偷精品视频不卡| 国产乱一区二区| 99综合影院在线| 91久久奴性调教| 777精品伊人久久久久大香线蕉| 欧美精品 日韩| 精品区一区二区| 久久久国产精品麻豆| 国产精品视频线看| 亚洲精品视频观看| 男男视频亚洲欧美| 国产麻豆精品在线观看| 不卡视频免费播放| 欧美视频一区在线| 精品国产自在久精品国产| 中文字幕精品在线不卡| 国产精品久久影院| 亚洲国产va精品久久久不卡综合| 日韩极品在线观看| 成人黄色小视频在线观看| 欧美影院一区二区三区| 欧美高清视频不卡网| 国产性天天综合网| 亚洲高清视频的网址| 九一久久久久久| 91女厕偷拍女厕偷拍高清| 欧美精品一二三四| 国产精品三级av在线播放| 亚洲无人区一区| 国产福利91精品一区| 欧美日韩三级视频| 国产欧美日韩另类一区| 日韩精品乱码av一区二区| 成人黄色777网| 日韩欧美在线综合网| 亚洲视频你懂的| 精品夜夜嗨av一区二区三区| av在线播放成人| 日韩欧美国产一二三区| 1000精品久久久久久久久| 九九**精品视频免费播放| 色综合久久久久综合体| 2欧美一区二区三区在线观看视频| 亚洲精品午夜久久久| 国产成人av在线影院| 欧美一区二区三区啪啪| 亚洲精品一二三| 成人污视频在线观看| 日韩免费一区二区三区在线播放| 伊人婷婷欧美激情| 国产成a人无v码亚洲福利| 日韩女优视频免费观看| 亚洲国产欧美日韩另类综合| 成人激情小说网站| 国产三级久久久| 九九**精品视频免费播放| 欧美精品久久一区| 亚洲国产精品久久久久婷婷884| 福利视频网站一区二区三区| 精品国产乱码久久久久久蜜臀| 天堂va蜜桃一区二区三区漫画版 | 一区av在线播放| jlzzjlzz亚洲日本少妇| 久久精品水蜜桃av综合天堂| 美女脱光内衣内裤视频久久网站 | 欧美视频在线观看一区| 亚洲人一二三区| 91亚洲精华国产精华精华液| 欧美激情自拍偷拍| 国产成人精品免费在线| 国产亚洲欧美中文| 精品中文字幕一区二区| 日韩欧美成人午夜| 麻豆91在线观看| 久久综合九色综合欧美亚洲| 久久精品久久久精品美女| 欧美一二三区在线观看| 麻豆成人av在线| 久久久久久综合| www.日韩精品|