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

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

?? client.java

?? 簡單的多用戶聊天室,服務端和客戶端使用AWT組件.
?? JAVA
字號:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.Calendar;
import javax.swing.*;

public class Client extends Frame implements ActionListener{

	private boolean login = false;
	private Color backGround = new Color(255, 255, 255);
	private String rightNow;
	private InetAddress clientAddress;
	private Socket connection;
	private DataInputStream in;
	private DataOutputStream out;
	private recThread receiver;
	
	private Button loginButton = new Button("登陸");
	private Button logoutButton = new Button("退出");
	private Button sendButton = new Button("發送");
	
	private Label userName = new Label("用戶名:");
	private TextField getUserName = new TextField();	// 獲取用戶名
	private Label serverIP = new Label("服務器IP:");
	private TextField getServerIP = new TextField();		// 獲取服務器 IP 地址
	private Label serverPort = new Label("服務器端口:");
	private TextField getServerPort = new TextField();  	// 獲取服務器端口
	private Label inputTitle=new Label("想對大家說:");
	private TextArea input = new TextArea();            // 輸入文本框
	private Label outputTitle=new Label("點滴心語:");
	private TextArea output = new TextArea();			// 輸出文本框
	private Label user = new Label("在線好友(0)");
	private List userList = new List();
	// 用于接收服務器消息的線程類
	private class recThread extends Thread
	{
		public recThread()
		{
			start();
		}
		public void run()
		{
			try{
				while(login){
					String line = in.readUTF();
					rightNow = Calendar.getInstance().getTime().toLocaleString();
					if(line.charAt(0) == 'Q'){
						if(line.length() == 1){
							// 退出
							connection.close();
							rightNow = Calendar.getInstance().getTime().toLocaleString();
							output.append(rightNow+"\n!!!成功退出.\n\n");
							login = false;
							userList.clear();
							getUserName.setEditable(true);
							getServerIP.setEditable(true);
							getServerPort.setEditable(true);
							loginButton.setEnabled(true);
							sendButton.setEnabled(false);
							logoutButton.setEnabled(false);
							break;
						}
						else{
							// 其他用戶退出
							userList.remove(line.substring(2));
							user.setText("User ("+userList.getItemCount()+")");
							output.append(rightNow+"\n"+"!!!很遺憾:"+line.substring(2)+"剛剛下線.\n\n");
						}
					}
					else if(line.charAt(0) == 'L'){
						// 其他用戶登錄
						userList.add(line.substring(2));
						user.setText("User ("+userList.getItemCount()+")");
						output.append(rightNow+"\n"+"!!!好消息: "+line.substring(2)+" 剛剛上線.\n\n");
					}
					else{
						output.append(rightNow+"\n"+line+"\n\n");
					}
				}
			}catch(SocketException se){
				rightNow = Calendar.getInstance().getTime().toLocaleString();
				output.append(rightNow+"\n!!!警告:與服務器斷開連接.\n\n");
				login = false;
				userList.clear();
				getUserName.setEditable(true);
				getServerIP.setEditable(true);
				getServerPort.setEditable(true);
				loginButton.setEnabled(true);
				sendButton.setEnabled(false);
				logoutButton.setEnabled(false);				
			}catch (IOException ioe){
				output.append("Error: "+ioe+"\n\n");
			}
		}
	}
	// 響應關閉按鈕的內部類
	private class WindowCloser extends WindowAdapter
	{
		public void windowClosing(WindowEvent we)
		{
			System.exit(0);
		}
	}
	
	
	//窗口布局
	private void openWindow()
	{
		Font fb = new Font("Helvetica", Font.BOLD, 17);
		Font fp = new Font("Courier", Font.PLAIN, 14);

		Panel userNamePanel=new Panel();
		userNamePanel.setLayout(new BorderLayout());
		userNamePanel.add("West",userName);
		userName.setBackground(backGround);
		userName.setFont(fp);
		userNamePanel.add("Center",getUserName);
		getUserName.setBackground(backGround);
		
		Panel serverIPPanel=new Panel();
		serverIPPanel.setLayout(new BorderLayout());
		serverIPPanel.add("West",serverIP);
		serverIP.setBackground(backGround);
		serverIP.setFont(fp);
		serverIPPanel.add("Center",getServerIP);
		getServerIP.setBackground(backGround);
		
		Panel serverPortPanel=new Panel();
		serverPortPanel.setLayout(new BorderLayout());
		serverPortPanel.add("West",serverPort);
		serverPort.setBackground(backGround);
		serverPort.setFont(fp);
		serverPortPanel.add("Center",getServerPort);
		getServerPort.setBackground(backGround);
		
		Panel logPanel=new Panel();
		logPanel.setLayout(new GridLayout(1,2,5,5));
		logPanel.add(loginButton);
		loginButton.setBackground(new Color(192, 192, 192));
		loginButton.setFont(fb);
		logPanel.add(logoutButton);
		logoutButton.setBackground(new Color(192, 192, 192));
		logoutButton.setFont(fb);
		
		Panel north = new Panel();
		north.setLayout(new GridLayout(2,2,10,5));
		north.add(serverIPPanel);
		north.add(userNamePanel);
		north.add(serverPortPanel);
		north.add(logPanel);
        
		Panel outputPanel = new Panel();
		outputPanel.setLayout(new BorderLayout());
		outputPanel.add("North",outputTitle);
		outputTitle.setBackground(backGround);
		outputTitle.setFont(fp);
		outputPanel.add("Center",output);
		output.setBackground(backGround);
		
		Panel inputPanel = new Panel();
		inputPanel.setLayout(new BorderLayout());
		inputPanel.add("North",inputTitle);
		inputTitle.setBackground(backGround);
		inputTitle.setFont(fp);
		inputPanel.add("Center",input);
		input.setBackground(backGround);
		
		Panel center = new Panel();
		center.setLayout(new BorderLayout());
		center.add("Center",outputPanel);
		center.add("South",inputPanel);
		
		Panel east = new Panel();
		east.setLayout(new BorderLayout());
		east.add("North", user);
		user.setBackground(backGround);
		user.setFont(fp);
		east.add("Center", userList);
		userList.setBackground(backGround);
		
		Panel south = new Panel();
		south.setLayout(new BorderLayout());
		south.add("Center", sendButton);
		sendButton.setBackground(new Color(192, 192, 192));
		sendButton.setFont(fb);

		
		setLayout(new BorderLayout());
		add("North", north);
		add("Center", center);
		add("East", east);
		add("South",south);
		setBackground(backGround);
			
	}
	

	
	
	
	// 構造方法
	public Client()throws UnknownHostException, IOException
	{
		super("多人聊天室客戶端  Client");
		
		login = false;
		clientAddress = InetAddress.getLocalHost();
		byte[] ip = clientAddress.getAddress();
		String strIP = (ip[0]&0xFF)+"."+(ip[1]&0xFF)+
				"."+(ip[2]&0xFF)+"."+(ip[3]&0xFF);
		getServerIP.setText(strIP);
		getServerPort.setText("1234");

		output.setEditable(false);	// 輸出文本框設為只讀屬性	
		loginButton.addActionListener(this);
		sendButton.addActionListener(this);
		sendButton.setEnabled(false);
		logoutButton.addActionListener(this);
		logoutButton.setEnabled(false);
		addWindowListener(new WindowCloser());
		
		getUserName.setText("請在此處輸入您的名字");
		openWindow();
		pack();
		setSize(500, 550);
		show();
		
		rightNow = Calendar.getInstance().getTime().toLocaleString();
		output.append(rightNow+"\n多人聊天室客戶端歡迎您!"+"\n\n");
	}
	// 登錄
	private void logIn()
	{
		if(login) return;
		boolean accepted = false, refused = false;
		String line= new String("");
		try{
			connection = new Socket(getServerIP.getText(), 
					Integer.parseInt(getServerPort.getText()));
			in = new DataInputStream(connection.getInputStream());
			out = new DataOutputStream(connection.getOutputStream());
			out.writeUTF("L "+getUserName.getText());
			while(!accepted && !refused){
				line = in.readUTF();
				if(line.charAt(0) == 'R'){
					refused = true;
				}
				if(line.charAt(0) == 'A'){
					accepted = true;
				}
			}
			if(refused){
				rightNow = Calendar.getInstance().getTime().toLocaleString();
				output.append(rightNow+"\n!!!該用戶已經登錄,請換一個用戶名再試試.\n\n");
			}
			if(accepted){
				rightNow = Calendar.getInstance().getTime().toLocaleString();
				output.append(rightNow+"\n!!!登錄成功.\n\n");
				login = true;
				// 獲取當前在線用戶列表
				String[] str = line.split(" ");
				for (int i = 1; i < str.length; i ++){
					userList.add(str [i]);
				}
				user.setText("在線好友 ("+userList.getItemCount()+")");
				
				getUserName.setEditable(false);
				getServerIP.setEditable(false);
				getServerPort.setEditable(false);
				loginButton.setEnabled(false);
				sendButton.setEnabled(true);
				logoutButton.setEnabled(true);
				receiver = new recThread();
			}			
		}catch(ConnectException ce){
			rightNow = Calendar.getInstance().getTime().toLocaleString();
			output.append(rightNow+"\n!!!警告:未找到服務器\n\n");
		}catch(UnknownHostException uhe){
			rightNow = Calendar.getInstance().getTime().toLocaleString();
			output.append(rightNow+"\n!!!警告:未找到服務器\n\n");
		}catch(IOException ioe){
			output.append("Error: "+ioe+"\n\n");
		}
	}
	// 發送消息
	private void sendMsg()
	{
		if(!login) return;
		try{
			out.writeUTF("M "+input.getText());
			input.setText("");
		}catch (IOException ioe){
			output.append("Error: "+ioe+"\n\n");
		}
	}
	// 退出登錄
	private void Quit()
	{
		if(!login) return;
		try{
			out.writeUTF("Q");
		}catch (IOException ioe){
			output.append("Error: "+ioe+"\n\n");
		}
	}
	// 消息處理方法
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource() == loginButton){
			logIn();
		}
		if(e.getSource() == sendButton){
			sendMsg();
		}
		if(e.getSource() == logoutButton){
			Quit();
		}
	}
	
	// 程序入口
	public static void main(String args [])throws UnknownHostException, IOException
	{
		Client c = new Client();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日产国产欧美视频一区精品| 亚洲精品少妇30p| 欧美又粗又大又爽| www.99精品| 成人av在线网| www.亚洲人| 成人精品视频.| 99久久伊人精品| 99九九99九九九视频精品| 国产91精品精华液一区二区三区| 国产精品一区二区三区四区| 国产一区二区三区美女| 丁香五精品蜜臀久久久久99网站| 国产精品18久久久久久久久久久久| 国产一区高清在线| 成人性生交大片免费看中文网站| www.性欧美| 欧美三电影在线| 欧美大胆一级视频| 国产人伦精品一区二区| 亚洲精品国产第一综合99久久| 亚洲精选在线视频| 天涯成人国产亚洲精品一区av| 捆绑调教美女网站视频一区| 国产精品一区二区在线看| 成人h版在线观看| 91免费观看在线| 欧美日韩一级黄| 久久噜噜亚洲综合| 亚洲综合小说图片| 麻豆成人av在线| 99re66热这里只有精品3直播| 欧美在线视频全部完| 日韩精品一区国产麻豆| 国产精品成人免费| 美女精品自拍一二三四| 91丨九色porny丨蝌蚪| 日韩三级.com| 亚洲色图视频网站| 久草这里只有精品视频| 在线观看日韩电影| 国产人妖乱国产精品人妖| 亚洲一区二区视频在线| 国产精品一品二品| 欧美乱妇15p| 专区另类欧美日韩| 国产综合色在线| 欧美精品在线一区二区| 国产精品污污网站在线观看| 日韩精品成人一区二区三区| 北条麻妃一区二区三区| 精品国产一区a| 丝瓜av网站精品一区二区| 91网站最新地址| 国产免费观看久久| 国产一区91精品张津瑜| 日韩视频免费观看高清完整版| 国产精品福利电影一区二区三区四区| 日本系列欧美系列| 欧美午夜电影一区| 亚洲精品亚洲人成人网在线播放| 久久国产麻豆精品| 正在播放亚洲一区| 午夜精品一区在线观看| 91福利区一区二区三区| 亚洲欧美日韩系列| 99精品国产一区二区三区不卡| 久久久久九九视频| 国产精品综合视频| 精品国产人成亚洲区| 全部av―极品视觉盛宴亚洲| 色综合久久久久网| 中文字幕在线免费不卡| 成人va在线观看| 国产精品电影一区二区三区| 北条麻妃国产九九精品视频| 国产精品青草久久| 91香蕉视频污在线| 一级中文字幕一区二区| 91美女在线视频| 中文字幕不卡三区| av色综合久久天堂av综合| 国产精品色呦呦| 99久久婷婷国产精品综合| 亚洲自拍与偷拍| 欧美高清精品3d| 久久99精品国产.久久久久久| 欧美一区二区三区婷婷月色| 日韩精品成人一区二区三区| 欧美成人艳星乳罩| 国产精品影视在线| 亚洲九九爱视频| 制服.丝袜.亚洲.另类.中文| 精品中文字幕一区二区| 国产日本欧洲亚洲| 色视频欧美一区二区三区| 亚洲高清视频在线| 久久综合视频网| 97久久超碰国产精品| 日韩综合一区二区| 久久久久久久电影| 日本韩国欧美在线| 久久超碰97中文字幕| 国产精品亲子乱子伦xxxx裸| 欧美亚洲高清一区二区三区不卡| 日韩国产精品91| 国产欧美在线观看一区| 欧美性xxxxx极品少妇| 久久国产精品99久久人人澡| 1区2区3区国产精品| 91精品国产综合久久久蜜臀图片| 国产米奇在线777精品观看| 亚洲精品伦理在线| 日韩一二三区视频| 91蜜桃在线观看| 国产一区二区精品在线观看| 亚洲国产婷婷综合在线精品| 久久综合狠狠综合| 91官网在线免费观看| 激情综合亚洲精品| 天天做天天摸天天爽国产一区| 中文字幕av在线一区二区三区| 欧美一二三四在线| 在线看日本不卡| 国产mv日韩mv欧美| 久久精品噜噜噜成人av农村| 最新欧美精品一区二区三区| 欧美人xxxx| 99久久精品国产观看| 国产精品资源在线| 另类欧美日韩国产在线| 亚洲综合激情另类小说区| 中日韩av电影| 久久久久久久一区| 日韩欧美激情四射| 日韩视频免费直播| 欧美一区二区三区视频免费播放| 色婷婷综合久久久久中文一区二区 | 欧美国产一区视频在线观看| 欧美日韩国产乱码电影| 99久久99久久免费精品蜜臀| 国产在线国偷精品免费看| 五月综合激情网| 亚洲成人手机在线| 亚洲一二三级电影| 亚洲综合一区在线| 亚洲综合成人在线视频| 亚洲日本一区二区| 综合久久综合久久| 综合分类小说区另类春色亚洲小说欧美| 精品免费日韩av| 日韩亚洲欧美在线| 日韩一二三四区| 日韩欧美中文字幕公布| 日韩午夜中文字幕| 欧美成人aa大片| 欧美成人在线直播| 欧美不卡视频一区| 久久午夜国产精品| 国产欧美一区二区精品忘忧草| 久久久777精品电影网影网| 久久久精品免费观看| 亚洲国产精品激情在线观看| 中文字幕视频一区| 亚洲美女屁股眼交| 亚洲mv在线观看| 青青草原综合久久大伊人精品优势| 天天综合天天综合色| 日韩电影免费在线看| 久久97超碰色| 国产成人免费在线视频| 成人动漫一区二区在线| 91国偷自产一区二区三区成为亚洲经典| 色哟哟在线观看一区二区三区| 欧美色区777第一页| 日韩精品中文字幕一区| 国产精品乱人伦一区二区| 樱桃视频在线观看一区| 青娱乐精品视频在线| 国产iv一区二区三区| 色狠狠桃花综合| 日韩欧美国产小视频| 日本一区二区视频在线观看| 一区二区三区免费观看| 精品在线一区二区三区| 不卡视频一二三四| 欧美高清dvd| 国产欧美一区二区三区网站| 亚洲免费观看高清完整版在线观看熊| 亚洲va韩国va欧美va| 国产成人精品一区二区三区网站观看| 一本到三区不卡视频| 91精品国产综合久久国产大片| 久久这里只有精品6| 亚洲激情欧美激情| 国产一区二区精品在线观看| 欧美色倩网站大全免费| 中文字幕成人在线观看| 蜜桃av噜噜一区| 91黄色小视频|