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

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

?? clientwindow.java

?? QQ聊天工具的源代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * clientWindow.java
 *
 * Created on 2007年12月20日, 下午8:35
 */

/**
 *
 * @author  Admin
 *用戶會話窗口; 用戶發送和接受消息由不同線程完成;用戶講在一個特定的端口接受消息,此端口號每次登錄都會不同,但在一次登錄成功急以后的會話中相同.
 * 客戶端會將此端口號發送至服務器.服務器將會把用戶名&端口號記錄下來;將發給該用戶的消息,發往該端口;因此服務器與客戶端的發送接受不在同一個socket,
 * 而是在需要發送信息時臨時創建一個socket;這樣處理的目的是提高客戶端的并發度,而服務器可以采用相同的方法處理消息;
 */
import java.io.*;
import java.net.*;
import java.lang.*;
import javax.swing.*;
import java.awt.Container.*;
import java.net.BindException;
public class clientWindow extends javax.swing.JFrame {
	/** Creates new form clientWindow */
	public int PORT=2003;						//默認偵聽端口為2003,此端口可能不可用,被修改;
	public String rckey=null;					//session key;在登錄時與服務器協商好的,作為參數傳遞到會話窗口;
	public String filepath=null;					//傳輸文件時選擇的文件路徑
	public clientWindow(String un, String ip, String key) {	
		initComponents();
		usernametextLabel.setText(un);
		IPtextLabel.setText(ip);
		rckey = key;
	}
	public void log(String log)					//log函數;在登錄,登出時調用;發送合法的登錄登出消息格式,正常結束連接;
	{
		String info = "";
		if(log.equals("on"))
		{	
			info = "%"+usernametextLabel.getText()+"%"+PORT;
		}else if(log.equals("off"))
		{
			info = "logoff";
		}else
		{
			JOptionPane.showMessageDialog(null,"錯誤的登錄參數", "error", JOptionPane.ERROR_MESSAGE);
		}
		String message = EncryptAndDecrypt.encryption(info, rckey, "RC4");
		try{

			Socket skt = new Socket("127.0.0.1",2500);
			DataOutputStream dos = new DataOutputStream(skt.getOutputStream());
			dos.writeBytes(message+"&"+usernametextLabel.getText());
			dos.close();
			skt.close();
		}catch(UnknownHostException unex)
		{
			System.err.println(unex);
		}catch(IOException ioex)
		{
			System.err.println(ioex);
		}
	}
	class Listen extends Thread					//接受消息的線程;此線程偵聽尋找一個可用端口并偵聽該端口
	{
		private ServerSocket sevskt = null;
		public Listen()
		{
			mark:	while(true)				//循環測試端口是否可用,直到發現可用端口,基礎端口為默認的2003
			{
				try{
					sevskt = new ServerSocket(PORT);
					break;
				}catch(java.net.BindException e)
				{
					PORT++;
					continue mark;
				}catch(IOException ioex)
				{
					System.err.println(ioex);
				}
			}
			log("on");
		}
		public void run()
		{
			
			try{
				while(true)
				{
					Socket skt = sevskt.accept();
					BufferedReader binReader = new BufferedReader(new InputStreamReader(skt.getInputStream()));
					String message = binReader.readLine();
					message = EncryptAndDecrypt.decryption(message, rckey, "RC4");
					
					if(message.equals("file"))
					{
						JOptionPane.showMessageDialog(null,"請求傳輸文件", "message", JOptionPane.INFORMATION_MESSAGE);
						filechooser frame1 = new filechooser(null, rckey);
						frame1.setTitle("檔案選擇對話方塊");
						frame1.setSize(550,350);
						frame1.setVisible(true);
					}else if(message.endsWith("&"))
					{
						String users[] = message.split("&");
						for(int i=0; i<users.length&&users[i]!=null; i++)
						{
							activeuserTab.setValueAt(users[i],i,0);
						}
					}else if(message.contains(":")){
						int pos = message.indexOf(":");
						String head = message.substring(0, pos);
						String load = message.substring(pos+1, message.length());
						messageTA.append(head + ":\n" + load+"\n");
					}else{
					}
					binReader.close();
					skt.close();
				}
			}catch(UnknownHostException unex)
			{
				System.err.println(unex);
			}catch(IOException ioex)
			{
				System.err.println(ioex);
			}
		}
	}
	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
        // <editor-fold defaultstate="collapsed" desc=" 生成的代碼 ">//GEN-BEGIN:initComponents
        private void initComponents() {
                jScrollPane4 = new javax.swing.JScrollPane();
                jTable1 = new javax.swing.JTable();
                jScrollPane3 = new javax.swing.JScrollPane();
                jTable2 = new javax.swing.JTable();
                jScrollPane1 = new javax.swing.JScrollPane();
                messageTA = new javax.swing.JTextArea();
                jScrollPane2 = new javax.swing.JScrollPane();
                sendtextTA = new javax.swing.JTextArea();
                sendBtn = new javax.swing.JButton();
                privateBtn = new javax.swing.JButton();
                usernameLabel = new javax.swing.JLabel();
                usernametextLabel = new javax.swing.JLabel();
                IPLabel = new javax.swing.JLabel();
                IPtextLabel = new javax.swing.JLabel();
                jScrollPane5 = new javax.swing.JScrollPane();
                activeuserTab = new javax.swing.JTable();
                transmitBtn = new javax.swing.JButton();
                logoffBtn = new javax.swing.JButton();

                jTable1.setModel(new javax.swing.table.DefaultTableModel(
                        new Object [][] {
                                {null, null, null, null},
                                {null, null, null, null},
                                {null, null, null, null},
                                {null, null, null, null}
                        },
                        new String [] {
                                "Title 1", "Title 2", "Title 3", "Title 4"
                        }
                ));
                jScrollPane4.setViewportView(jTable1);

                jTable2.setModel(new javax.swing.table.DefaultTableModel(
                        new Object [][] {
                                {null, null, null, null},
                                {null, null, null, null},
                                {null, null, null, null},
                                {null, null, null, null}
                        },
                        new String [] {
                                "Title 1", "Title 2", "Title 3", "Title 4"
                        }
                ));
                jScrollPane3.setViewportView(jTable2);

                setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
                messageTA.setColumns(20);
                messageTA.setEditable(false);
                messageTA.setRows(5);
                messageTA.addAncestorListener(new javax.swing.event.AncestorListener() {
                        public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
                        }
                        public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
                                messageTAAncestorAdded(evt);
                        }
                        public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
                        }
                });

                jScrollPane1.setViewportView(messageTA);

                sendtextTA.setColumns(20);
                sendtextTA.setRows(5);
                jScrollPane2.setViewportView(sendtextTA);

                sendBtn.setText("send");
                sendBtn.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent evt) {
                                sendBtnActionPerformed(evt);
                        }
                });

                privateBtn.setText("private");
                privateBtn.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent evt) {
                                privateBtnActionPerformed(evt);
                        }
                });

                usernameLabel.setText("Username");

                usernametextLabel.setText("111");

                IPLabel.setText("IP address");

                IPtextLabel.setText("122");

                activeuserTab.setModel(new javax.swing.table.DefaultTableModel(
                        new Object [][] {
                                {null},
                                {null},
                                {null},
                                {null},
                                {null},
                                {null},
                                {null},
                                {null}
                        },
                        new String [] {
                                "User online"
                        }
                ) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲国产奇米99| 欧美亚洲动漫精品| 亚洲成人精品一区二区| 亚洲国产精品传媒在线观看| 日韩视频免费观看高清完整版 | 日韩精品中文字幕一区| 欧美日韩一级二级| 5858s免费视频成人| 日韩一区二区三免费高清| 日韩一区二区视频| 精品少妇一区二区三区免费观看 | 久久蜜桃一区二区| 久久精品视频网| 国产精品久久久久aaaa| 国产精品久久久久四虎| 亚洲免费观看高清完整版在线| 亚洲欧美日韩小说| 日韩不卡一二三区| 精品写真视频在线观看| 成人中文字幕合集| 日本精品视频一区二区| 51精品视频一区二区三区| 日韩一区二区视频| 日本一区二区三区dvd视频在线| 国产精品拍天天在线| 国产精品成人在线观看| 亚洲一区二区高清| 久久精品99国产国产精| 国产成人一区在线| 欧美色视频在线| 精品国产乱码久久久久久久久| 日本一区二区视频在线观看| 亚洲三级电影全部在线观看高清| 天天色图综合网| 粉嫩高潮美女一区二区三区| 91高清在线观看| 久久免费午夜影院| 亚洲一区二区3| 国产精一品亚洲二区在线视频| 91麻豆免费看| 欧美成人高清电影在线| 亚洲欧美一区二区三区孕妇| 午夜精品在线视频一区| 成人av网站大全| 欧美va亚洲va| 亚洲电影在线免费观看| 国产精品99久久久久久久女警 | 青青草国产成人av片免费 | 久久女同性恋中文字幕| 亚洲精品菠萝久久久久久久| 秋霞电影网一区二区| 色婷婷激情一区二区三区| 亚洲精品在线网站| 麻豆91在线观看| 欧美日韩dvd在线观看| 欧美激情综合网| 久久99蜜桃精品| 欧美日韩国产另类不卡| 国产精品传媒入口麻豆| 国产精品一区二区免费不卡| 91精品国产欧美一区二区成人 | 日韩视频免费直播| 亚洲h在线观看| 欧美在线视频日韩| 亚洲女同一区二区| 91亚洲精品久久久蜜桃| 国产精品久久久久影院| 国内不卡的二区三区中文字幕 | 99久久精品国产一区二区三区| 2024国产精品| 捆绑紧缚一区二区三区视频 | 久久综合九色综合97婷婷女人| 午夜国产精品影院在线观看| 99精品视频一区| 国产精品成人网| 91亚洲精品久久久蜜桃网站 | 美女精品自拍一二三四| caoporen国产精品视频| 欧美高清一级片在线观看| 韩日欧美一区二区三区| 久久久噜噜噜久久人人看| 国产一区二区三区精品视频| 久久影院午夜论| 国产乱人伦偷精品视频不卡| 久久综合色8888| 国产ts人妖一区二区| 中文字幕欧美日本乱码一线二线| 国产成人丝袜美腿| 日韩码欧中文字| 欧美日韩色综合| 免费在线一区观看| 国产亚洲欧美日韩俺去了| 粉嫩一区二区三区在线看| 国产精品久久久久久久久晋中 | 99久久精品国产一区二区三区| 国产精品久久久久久久久久久免费看 | 精品蜜桃在线看| 国产精品一区不卡| 国产精品情趣视频| 欧美日韩一区 二区 三区 久久精品 | 风间由美性色一区二区三区| 亚洲三级在线看| 7777女厕盗摄久久久| 韩国毛片一区二区三区| 国产精品久久久久久久久图文区 | 日韩午夜av电影| 丁香天五香天堂综合| 亚洲美女电影在线| 日韩一区二区影院| 成人精品一区二区三区四区 | 91麻豆免费看| 毛片基地黄久久久久久天堂| 久久精品视频一区二区| 91福利在线导航| 国产麻豆成人传媒免费观看| 亚洲精品视频在线看| 亚洲精品一区二区三区精华液| av激情亚洲男人天堂| 美女www一区二区| 亚洲视频免费观看| 欧美v国产在线一区二区三区| 91麻豆国产在线观看| 美女一区二区在线观看| 亚洲精选在线视频| 久久久久久久久伊人| 91精品国产综合久久小美女| 99国产精品久| 国产精品一区二区在线观看不卡 | 日本中文字幕不卡| 亚洲免费三区一区二区| 久久久久久97三级| 日韩精品影音先锋| 欧美理论电影在线| 91热门视频在线观看| 成人久久久精品乱码一区二区三区| 午夜视频在线观看一区二区| 亚洲欧美综合色| 国产精品网友自拍| 久久久久久一二三区| 日韩免费性生活视频播放| 欧美日韩在线一区二区| 色婷婷精品大视频在线蜜桃视频| 成人毛片在线观看| 高清成人免费视频| 国产69精品久久久久777| 精品在线观看免费| 蜜桃精品视频在线观看| 天天影视涩香欲综合网| 午夜精品久久久久久久99水蜜桃| 一区二区三区四区乱视频| 最近日韩中文字幕| 亚洲日本成人在线观看| 亚洲欧洲日产国产综合网| 国产精品色在线观看| 中文字幕 久热精品 视频在线| 精品久久久久久久久久久久久久久| 777奇米四色成人影色区| 91精品国产91久久久久久一区二区 | 亚洲手机成人高清视频| 欧美国产视频在线| ...xxx性欧美| 亚洲免费在线看| 三级影片在线观看欧美日韩一区二区| 玉米视频成人免费看| 一区二区三区在线视频播放| 亚洲午夜国产一区99re久久| 亚洲va韩国va欧美va| 美女在线观看视频一区二区| 久久99久久99| 成人一区在线观看| 91亚洲永久精品| 在线播放视频一区| 欧美精品一区二区三| 国产日韩精品一区| 亚洲精品精品亚洲| 日韩av在线发布| 国产高清不卡一区| 在线亚洲精品福利网址导航| 555www色欧美视频| 欧美激情一区二区三区蜜桃视频 | 色婷婷一区二区| 欧美精品视频www在线观看| 日韩精品在线一区| 亚洲视频免费在线| 看电影不卡的网站| 99精品视频免费在线观看| 欧美精品黑人性xxxx| 国产日韩欧美激情| 日精品一区二区| 成人教育av在线| 欧美一区二区三区视频在线观看| 久久久精品tv| 日韩国产在线观看| 不卡av免费在线观看| 欧美一区二区日韩| 中文字幕视频一区二区三区久| 婷婷久久综合九色综合伊人色| 国产91精品入口| 欧美成人aa大片| 亚洲成人免费在线观看|