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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? chipchat.java

?? ChipChat實(shí)現(xiàn)的是局域網(wǎng)中的聊天功能
?? JAVA
字號(hào):
import java.io.*;
import java.net.*;
import java.util.Vector;
import java.awt.event.*;

import javax.swing.*;

import java.awt.*;

public class ChipChat extends JFrame
{
	JPanel contentPane;
	JTextField txtInput = new JTextField();
	JButton btnSend = new JButton();
	JButton TCPconnect = new JButton();
	List lstMsg = new List();
	List lstFriend = new List();
	JLabel name = new JLabel();
	JLabel Top = new JLabel();
	JLabel version = new JLabel();
	
	UserInfo [] userinfo = new UserInfo[90];//新建UserInfo數(shù)組類保存用戶信息
	
	ServerSocket listen_socket;

	
	public final static int DEFAULT_PORT = 8321;
	public final static int CATCH_PORT = 7321;
	public final static int TCP_PORT = 6321;
	
	
	DatagramSocket socket = null;
	InetAddress group; 
	InetAddress groupC; 
	DatagramPacket packet;     
	

	DatagramSocket s = null;
	MulticastSocket socketr;
	MulticastSocket socketC;
	Socket Csocket;
	
	
	CCListener cclisten;
	
	String nickname = new String("11111111111");
	
	
	
	public ChipChat()//構(gòu)造函數(shù)
	{
		while(nickname.length()>9||nickname.length()==0)
		{
			nickname  = JOptionPane.showInputDialog(null,"請(qǐng)輸入昵稱","登陸",3);
			if(nickname.length()>9)
				JOptionPane.showMessageDialog(null,"昵稱長(zhǎng)度需要小于10","非法昵稱",JOptionPane.ERROR_MESSAGE);
			if(nickname.length()==0)
				JOptionPane.showMessageDialog(null,"昵稱長(zhǎng)度需要等于0","非法昵稱",JOptionPane.ERROR_MESSAGE);
		}
		
		enableEvents(AWTEvent.WINDOW_EVENT_MASK);
		
		ChipChat_JoinGroup();//首先初始化端口,并向已經(jīng)在線的CC程序發(fā)送本機(jī)IP以及請(qǐng)求回應(yīng).并對(duì)相應(yīng)的組播組端口進(jìn)行監(jiān)聽(tīng)
		
		try
		{
			jbInit();//初始化FRAME窗口,并對(duì)相應(yīng)的控件添加事件響應(yīng)
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		
		this.setLocation(300,200);
		
		ChipChat_Listener();//對(duì)組內(nèi)公共聊天的組播組端口進(jìn)行監(jiān)聽(tīng)
		
		TCP_Listener();//對(duì)點(diǎn)對(duì)點(diǎn)TCP協(xié)議端口進(jìn)行監(jiān)聽(tīng)

	}
	
	
	
	protected void processWindowEvent(WindowEvent e)
	{
		super.processWindowEvent(e);
		if(e.getID()==WindowEvent.WINDOW_CLOSING)
		{
			
			try
			{
				//退出時(shí)發(fā)送退出登陸的信息的組播數(shù)據(jù)包,其包的內(nèi)容的起始位為判斷位,"D"表示該包為告知下線的信息包
				byte [] notice = new String("D"+nickname+InetAddress.getLocalHost().getHostAddress()+nickname.length()).getBytes();
				packet = new DatagramPacket(notice,notice.length,groupC,CATCH_PORT);
				socket.send(packet);
			}catch(IOException ee)
			{
				ee.printStackTrace();
			}
			socket.close();
			System.exit(0);
		}
	}

	
	public void jbInit()//初始化應(yīng)用程序窗口
	{
		version.setText("V1.2");
		version.setBounds(new Rectangle(420,5,50,30));
		txtInput.setText("");
		txtInput.setBounds(new Rectangle(80,140,140,30));
		txtInput.addKeyListener(new KeyAdapter (){//添加事件按鍵事件監(jiān)聽(tīng),當(dāng)文本框中按下"回車"時(shí)則發(fā)送文本框消息
			public void keyPressed(KeyEvent ek){
				if(ek.getKeyChar() == '\n')
					try {
						byte[] dataS = (nickname+":"+txtInput.getText()).getBytes();
						packet = new DatagramPacket(dataS,dataS.length, group, DEFAULT_PORT); 
						socket.send(packet);        
						txtInput.setText("");
						}
						catch(Exception e1) 
						{
						System.out.println("Error: " + e1);                 
						}
            }

		});
		

		contentPane = (JPanel)this.getContentPane();
		contentPane.setLayout(null);
		name = new JLabel(nickname+":");
		name.setBounds(new Rectangle(20,140,50,30));
		this.setSize(480,210);
		this.setTitle("ChipChat");
		
		
		Icon sentIcon = new ImageIcon("image\\BTSend.gif");
		Icon BG = new ImageIcon("image\\BackGround1.gif");
		Icon TCPIcon = new ImageIcon("image\\BTConnect.gif");
		
		Top.setIcon(BG);
		Top.setBounds(0,0,480,183);
		
		
		btnSend.setIcon(sentIcon);
		btnSend.setBounds(230,141,89,32);
		btnSend.setBackground(Color.WHITE);
		btnSend.addActionListener(new java.awt.event.ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						btnSend_actionPerformed(e);
					}
				});
		TCPconnect.setIcon(TCPIcon);
		TCPconnect.setBounds(new Rectangle(355,140,89,32));
		TCPconnect.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						TCPconnect_actionPerformed(e);
					}
				});
		lstMsg.setBounds(new Rectangle(20,35,300,100));
		lstFriend.setBounds(new Rectangle(340,35,120,100));
		lstFriend.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						lstFriend_actionPerformed(e);
					}
				});
		contentPane.add(txtInput,null);
		contentPane.add(btnSend,null);
		contentPane.add(lstMsg,null);
		contentPane.add(name,null);
		contentPane.add(version,null);
		contentPane.add(lstFriend,null);
		contentPane.add(TCPconnect,null);
		contentPane.setBackground(Color.WHITE);
		contentPane.add(Top,null);
		this.setResizable(false);
	}
	
	
	public static void main(String [] arg)//主函數(shù),程序入口
	{
		ChipChat cc = new ChipChat();
		cc.setVisible(true);
	}
	
	
	public void processMsg(String str)//該方法為將字符串str顯示到對(duì)話列表框中
	{
		this.lstMsg.add(str);
		this.lstMsg.select(lstMsg.getItemCount()-1);
	}
	
	
	
	public void processFriend(String str)//該方法為將字符串str顯示到登陸信息列表框中
	{
		this.lstFriend.add(str);
	}
	
	

	
	
	
	public void ChipChat_JoinGroup()//初始化UDP協(xié)議端口信息          
	{
	try {                         
	        group = InetAddress.getByName("238.0.0.0"); //初始化廣播聊天信息組播組
	        groupC = InetAddress.getByName("239.0.0.0");//初始化登陸信息組播組  
	        socket = new DatagramSocket(); 
	        byte [] notify = new byte[100];
	        byte [] nametag = new byte[10];
	        nametag = nickname.getBytes();
	        //發(fā)送一個(gè)登陸信息給已經(jīng)登陸的用戶,通知他們本程序上線.包的數(shù)據(jù)結(jié)構(gòu)為:判斷位+用戶名+IP地址+用戶名長(zhǎng)度
	        notify =new String("C"+nickname+InetAddress.getLocalHost().getHostAddress()+nickname.length()).getBytes();
	        //int dd = InetAddress.getLocalHost().getHostAddress().length();
	        packet = new DatagramPacket(notify,notify.length,groupC,CATCH_PORT);
	        socket.send(packet);
	        socketC = new MulticastSocket(CATCH_PORT);
	        socketC.joinGroup(groupC);
	        CATCHER catcher = new CATCHER(socketC,this,nickname,userinfo);
	        Check_in LOGIN = new Check_in(this,userinfo);
	}
	    catch (Exception e1) {
			System.out.println("Error: " + e1);              
	    }
	}
	
	
	void lstFriend_actionPerformed(ActionEvent e)//雙擊登陸列表框內(nèi)容時(shí)觸發(fā)的事件為連通列表框中的IP,建立TCP通信
	{
		Socket socket;
		int s = this.lstFriend.getSelectedIndex();
		String address = userinfo[s].getIP();//用address記錄對(duì)方IP地址
		try
		{
			socket = new Socket(address,TCP_PORT);//建立連接
			TCP_Frame TT = new TCP_Frame(socket,userinfo[s].getName());//打開(kāi)TCP會(huì)話程序
			TT.setVisible(true);
		}catch(IOException elf)
		{
			elf.printStackTrace();
		}
	}
	
	
	void TCPconnect_actionPerformed(ActionEvent e)//連接按鈕事件監(jiān)聽(tīng)
	{
		Socket socketT;
		String NN = null;
		int s = this.lstFriend.getSelectedIndex();
		try
		{
			NN = userinfo[s].getName();
		}catch(Exception nu)
		{
			JOptionPane.showMessageDialog(null,"請(qǐng)從按鈕上方選擇想要連接的地址","空目標(biāo)地址",JOptionPane.ERROR_MESSAGE);
		}
		try
		{
			//對(duì)所選擇的登陸信息列表框中的內(nèi)容建立TCP連接

			String address = userinfo[s].getIP();//this.lstFriend.getSelectedItem().substring(2);
			socketT = new Socket(address,TCP_PORT);
			
			TCP_Frame TT = new TCP_Frame(socketT,userinfo[s].getName());
			TT.setVisible(true);

		}catch(IOException es)
		{
			
			JOptionPane.showMessageDialog(null,"該用戶已不在線","用戶下線",JOptionPane.ERROR_MESSAGE);
			try
			{
				byte [] notice = new String("D"+NN+InetAddress.getLocalHost().getHostAddress()+NN.length()).getBytes();
				packet = new DatagramPacket(notice,notice.length,groupC,CATCH_PORT);
				socket.send(packet);
			}catch(IOException ee)
			{
				ee.printStackTrace();
			}
			es.printStackTrace();
		}
	}
	
	
	
	
	void btnSend_actionPerformed(ActionEvent e)//群聊發(fā)送按鈕觸發(fā)
	{
		try {
			//發(fā)送一個(gè)數(shù)據(jù)包到組波組,數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)為:用戶名+文本框中的內(nèi)容
			byte[] dataS = (nickname+":"+txtInput.getText()).getBytes();
			packet = new DatagramPacket(dataS,dataS.length, group, DEFAULT_PORT); 
			socket.send(packet);        
			txtInput.setText("");//重設(shè)文本框的內(nèi)容為空,方便下一次輸入
			}
			catch(Exception e1) 
			{
			System.out.println("Error: " + e1);                 
			}
	}
	

	
	public void ChipChat_Listener()//群聊端口監(jiān)聽(tīng)
	{
		
		try
		{

			socketr = new MulticastSocket(DEFAULT_PORT);

			socketr.joinGroup(group);
			 
		}catch(IOException e)
		{
			e.printStackTrace();
		}
		cclisten = new CCListener(socketr,this);
	}
	
	
	public void TCP_Listener()//對(duì)點(diǎn)對(duì)點(diǎn)TCP端口進(jìn)行監(jiān)聽(tīng),一旦接到連接請(qǐng)求則馬上打開(kāi)一個(gè)TCP連接會(huì)話程序
	{
		TCPConnect tcp = new TCPConnect(TCP_PORT,this,nickname);
	}
}
	








?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄色小视频| 91论坛在线播放| 午夜精品久久久久影视| 一区二区三区在线视频播放| 亚洲人成网站色在线观看| 中文一区二区在线观看| 国产精品女同一区二区三区| 国产女同互慰高潮91漫画| 国产日产欧美精品一区二区三区| 久久精品人人做人人爽97| 国产欧美日韩综合精品一区二区| 国产亚洲精品bt天堂精选| 国产嫩草影院久久久久| 亚洲欧洲日韩在线| 亚洲精品国产精华液| 亚洲视频网在线直播| 亚洲综合另类小说| 婷婷综合五月天| 国内不卡的二区三区中文字幕 | 色综合久久99| 欧美在线观看一二区| 欧美高清一级片在线| 欧美成va人片在线观看| 久久精品在这里| 国产精品国产三级国产三级人妇| 一区二区在线免费观看| 日韩激情在线观看| 国产精品中文字幕日韩精品| 白白色 亚洲乱淫| 在线视频观看一区| 日韩天堂在线观看| 精品福利一二区| 亚洲视频在线观看三级| 久久久久久久久久看片| 亚洲天堂中文字幕| 一区二区三区.www| 麻豆精品国产传媒mv男同| 激情欧美一区二区| 99精品久久久久久| 欧美亚洲国产怡红院影院| 精品国产亚洲一区二区三区在线观看 | 极品销魂美女一区二区三区| 国产大片一区二区| 国产成人午夜视频| 欧美三级日韩三级国产三级| 欧美一级二级在线观看| 国产精品理论片在线观看| 亚洲精品中文字幕在线观看| 久久99九九99精品| 波多野结衣亚洲| 91美女蜜桃在线| 日韩欧美不卡一区| 国产精品久久久久永久免费观看 | 国产美女娇喘av呻吟久久| 91亚洲精品一区二区乱码| 精品视频免费在线| 日韩免费观看高清完整版 | 欧洲精品一区二区| 精品国产乱码久久久久久牛牛| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲一级片在线观看| 免费高清视频精品| 色天使久久综合网天天| 91精品国产91久久久久久最新毛片 | 丁香婷婷综合色啪| 欧美色精品天天在线观看视频| 久久综合给合久久狠狠狠97色69| 亚洲色图视频网站| 国产在线精品一区二区不卡了| 91精品91久久久中77777| 欧美大片在线观看| 亚洲精品视频在线观看网站| 午夜精品一区二区三区免费视频| 成人av电影在线| 欧美本精品男人aⅴ天堂| 天天亚洲美女在线视频| www.亚洲在线| 国产日本欧洲亚洲| 日韩中文字幕av电影| 色8久久人人97超碰香蕉987| 久久久夜色精品亚洲| 奇米影视7777精品一区二区| 91一区二区三区在线播放| 国产三级精品在线| 免费看黄色91| 日韩一卡二卡三卡四卡| 一区二区三区久久久| 91一区一区三区| 国产色综合一区| 亚洲一区中文日韩| 成人白浆超碰人人人人| 久久蜜臀中文字幕| 蜜桃久久av一区| 7777精品伊人久久久大香线蕉经典版下载 | 久久蜜桃香蕉精品一区二区三区| 亚洲超碰精品一区二区| 狠狠狠色丁香婷婷综合久久五月| 欧美日韩国产区一| 亚洲综合一二区| 欧美视频一区二区三区四区| 国产精品丝袜91| 国产一区二区三区免费看| 欧美一级日韩免费不卡| 亚洲色大成网站www久久九九| 国产精品18久久久久久久久| 久久婷婷成人综合色| 久久成人免费网| 久久亚洲一级片| 久草在线在线精品观看| 精品粉嫩超白一线天av| 免费久久99精品国产| 精品久久人人做人人爽| 麻豆一区二区在线| 亚洲精品在线网站| 国产剧情av麻豆香蕉精品| 精品日韩99亚洲| 精品影视av免费| 精品美女在线观看| 久久99久久精品欧美| 欧美日韩精品一区二区| 日本不卡一二三区黄网| 欧美日韩一区高清| 性做久久久久久免费观看欧美| 欧美无乱码久久久免费午夜一区| 一区二区三区欧美久久| 在线观看免费视频综合| 亚洲一区在线视频| 欧美巨大另类极品videosbest | 国产乱码字幕精品高清av| 欧美一区二区三区视频免费 | 国产精品白丝jk黑袜喷水| 精品99一区二区三区| 国产精品资源网站| 亚洲欧洲www| 日本精品一级二级| 亚洲777理论| 在线观看一区二区视频| 日本三级亚洲精品| 欧美mv和日韩mv国产网站| 国产另类ts人妖一区二区| 国产精品色呦呦| 色婷婷亚洲综合| 亚洲va欧美va天堂v国产综合| 91精品国产综合久久婷婷香蕉 | 国产亚洲综合色| 色综合激情五月| 婷婷一区二区三区| 欧美成人伊人久久综合网| 国产成人啪免费观看软件| 亚洲人精品一区| 欧美嫩在线观看| 国产老妇另类xxxxx| 国产日韩在线不卡| 欧美精品视频www在线观看| 久久er99精品| 一区在线播放视频| 91.com在线观看| 国产成人综合网| 一区二区三区日本| 日韩精品一区二区三区swag| 国内成人免费视频| 成人欧美一区二区三区小说| 91精品国产综合久久久久久| 国产成人啪免费观看软件 | 天天免费综合色| 久久婷婷国产综合精品青草| 色就色 综合激情| 美腿丝袜亚洲综合| 国产精品色噜噜| 欧美伊人久久久久久久久影院 | 蜜臀av性久久久久蜜臀av麻豆| 中文字幕高清一区| 欧美一二区视频| proumb性欧美在线观看| 亚洲激情五月婷婷| 久久嫩草精品久久久精品| 欧美中文字幕不卡| 国产一区在线精品| 亚洲丰满少妇videoshd| 久久五月婷婷丁香社区| 欧美日韩精品系列| 91麻豆国产精品久久| 久久爱另类一区二区小说| 一区二区三区在线播放| 精品久久久久久久久久久久久久久久久 | 国产91精品在线观看| 视频一区二区三区中文字幕| **欧美大码日韩| 日韩久久精品一区| 777午夜精品视频在线播放| 97se亚洲国产综合自在线| 国产老肥熟一区二区三区| 亚洲chinese男男1069| 国产精品久久久久久一区二区三区| 日韩精品专区在线| 欧美日韩黄色一区二区| 日本久久一区二区| 99在线精品观看| 国产精品一区二区无线| 麻豆91在线播放|