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

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

?? client.java

?? 實(shí)現(xiàn)多人即時(shí)聊天
?? JAVA
字號(hào):
import java.io.*;
import java.net.*;
import java.util.Vector;
import java.util.Hashtable;
import javax.swing.Timer;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class Client implements Runnable{
	private LoginDiag loginframe;
	private UserInfo myself;
	private Socket CSocket;
	//流
	private ObjectOutputStream StreamOut;
	private ObjectInputStream StreamIn;
	
	private Vector OnlineUsers;
	private Vector OfflineUsers;
	private Vector PubMsglist;
	private Vector Msglist;
	private ClientFrame clientframe;
	//線程體
	private boolean shutdown=false;

	public Client(){

		OnlineUsers=new Vector();
		OfflineUsers=new Vector();
		PubMsglist=new Vector();
		Msglist=new Vector();

		clientframe=new ClientFrame(this);
		loginframe=new LoginDiag(this);
		loginframe.setVisible(true);

	}//public Client()


public User getmyself(){
	return myself.getUser();
}

public void connect(String IP,int port)throws Exception{

System.out.println("in connect() 服務(wù)器IP+Port="+IP+":"+port);

	try{
System.out.println("準(zhǔn)備連接服務(wù)器");

		CSocket=new Socket(IP,port);

System.out.println("服務(wù)器連接成功");

		StreamOut=new ObjectOutputStream(CSocket.getOutputStream());
		StreamIn=new ObjectInputStream(CSocket.getInputStream());
System.out.println("流創(chuàng)建成功");

	}catch(Exception e){
		throw e;
	}
}//public void connect(String IP,int port)throws UnknownHostException,IOException


public int getClientPort(){//在connect()方法之前調(diào)用會(huì)出錯(cuò)

	return CSocket.getLocalPort();
}

public String getIPAddr(){//在connect()方法之前調(diào)用會(huì)出錯(cuò)

	return CSocket.getLocalAddress().getHostAddress();
}


public boolean login(UserInfo myself,boolean Register){

System.out.println("in login()");
System.out.println("UserInfo myself="+myself);
System.out.println("boolean Register="+Register);

this.myself=myself;

	char Cetified;
    try{
	if(Register){
		StreamOut.writeChar('R');
	}else{
		StreamOut.writeChar('L');
	}
	
	StreamOut.writeObject(myself);
	StreamOut.flush();

System.out.println("連接服務(wù)器的用戶信息:");
myself.display();
System.out.println("等待服務(wù)器反饋信息:(Y/N)");

	Cetified=StreamIn.readChar();
System.out.println("服務(wù)器的返回信息:");

	if(Cetified=='Y'){

System.out.println("收到Y(jié)準(zhǔn)備進(jìn)入初始化Init()");

		Init();		
		new Thread(this).start();
		clientframe.setVisible(true);
		return true;
	}
	else{return false;}

    }catch(Exception e){
	return false;
    }
}//public boolean login(UserInfo myself,boolean Register)

public void Init()throws Exception{

System.out.println("in Init()");

	PublicMessage tempPubMsg;
	Message tempmsg;
 	UserInfo tempUser;
	char tempConChar;
	boolean over=false;
    try{

System.out.println("準(zhǔn)備進(jìn)入while(!over)");

       while(!over){

//System.out.println("in while(!over)");

	tempConChar=StreamIn.readChar();

	switch(tempConChar){
			case 'C':{//公告

//System.out.println("in case 'C' 接收公告");

				tempPubMsg=(PublicMessage)StreamIn.readObject();

//System.out.print("接收的公告==null?   ");
//System.out.println(tempPubMsg==null);
//tempPubMsg.display();
				PubMsglist.add(tempPubMsg);
//System.out.println("正確一個(gè)接收公告");

				break;
			}//case 'C':
			case 'M':{//留言

//System.out.println("in case 'M' 接收留言");

				tempmsg=(Message)StreamIn.readObject();
				Msglist.add(tempmsg);
				break;
			}//case 'M':
			case 'F':{//其他用戶

//System.out.println("in case 'F' 接收用戶");

				tempUser=(UserInfo)StreamIn.readObject();

//System.out.print("接收的用戶==null?");	
//System.out.println(tempUser==null);	
			
				if(tempUser.getRegName().equals(this.myself.getRegName())){
					this.myself=tempUser;
				}else{
					if(tempUser.getOnlineState()){
						OnlineUsers.add(tempUser.getUser());
					}else{
						OfflineUsers.add(tempUser.getUser());
					}//offline
				}//if(!tempUser.getRegName().equals(this.myself.getRegName()))
				break;
			}//case 'F':
			case 'E':{//初始化信息接收完畢
				over=true;

System.out.println("接收到初始化結(jié)束標(biāo)志'E'");

				break;
			}//case 'E'
		}//switch(tempConChar)
	      }//while(!over)

//System.out.println("初始化clientframe前:");
//System.out.println("OnlineUsers.size()="+OnlineUsers.size());
//System.out.println("OfflineUsers.size()="+OfflineUsers.size());
//System.out.println("PubMsglist.size()="+PubMsglist.size());
//System.out.println("Msglist.size()="+Msglist.size());
System.out.println("開始初始化clientframe");

	clientframe.Init(OnlineUsers,OfflineUsers,PubMsglist,Msglist);

    }catch(Exception e){

System.out.println(e);
	throw e;
    }//catch(Exception e)
}//public void Init()throws Exception

public void send(Message msg,boolean RealTime){

System.out.println("in Client send(Message msg,boolean RealTime)");

     try{
		//StreamOut.flush();

		if(RealTime){
			StreamOut.writeChar('F');
		}else{
			StreamOut.writeChar('M');
		}

		//StreamOut.flush();

		msg.setFromName(myself.getRegName());
		StreamOut.writeObject(msg);
		StreamOut.flush();

System.out.println("即時(shí)信息已經(jīng)正確傳送");

     }catch(Exception e){

System.out.println("IO Error in Client send()");

		//有IO錯(cuò)誤忽略	
		//StreamOut.close();
		//StreamIn.close();
		//CSocket.close();
		System.out.println("IO Error In Client's send()");

		JOptionPane.showMessageDialog(clientframe,
				      "Server connected error,will exit!",
				      "Error",
				      JOptionPane.ERROR_MESSAGE);
		System.exit(0);
     }//catch(Exception e)	
}//public void send(Message msg,boolean Conbool)



public void send(User myNewInfo){

System.out.println("in Client send(User myNewInfo)");

     try{
		//StreamOut.flush();

		
System.out.println("in Client send(User myNewInfo),發(fā)送數(shù)據(jù):");
System.out.println("in InputThread 用戶名:"+myNewInfo.getUserName());
System.out.println("in InputThread 職位:"+myNewInfo.getJob());
System.out.println("in InputThread 密碼:"+myNewInfo.getPassword());
System.out.println("in InputThread 郵箱:"+myNewInfo.getEMail());
System.out.println("in InputThread 電話:"+myNewInfo.getTel());

		StreamOut.writeChar('N');
		

	
	StreamOut.writeObject(myNewInfo);
	StreamOut.flush();

System.out.println("個(gè)人最新信息已經(jīng)正確傳送");

     }catch(Exception e){

System.out.println("IO Error in Client send()");

		//有IO錯(cuò)誤忽略	
		//StreamOut.close();
		//StreamIn.close();
		//CSocket.close();
		System.out.println("IO Error In Client's send()");

		JOptionPane.showMessageDialog(clientframe,
				      "Server connected error,will exit!",
				      "Error",
				      JOptionPane.ERROR_MESSAGE);
		System.exit(0);
     }//catch(Exception e)	
}//public void send(User myNewInfo)







public void logoff(){

     try{
	StreamOut.writeChar('D');
	StreamOut.flush();

	//2秒鐘后自動(dòng)退出
System.out.println("2秒鐘后自動(dòng)關(guān)閉");

	Timer ClientExit =new Timer(2000,new ActionListener(){
      		public void actionPerformed(ActionEvent evt){

System.out.println("in logoff() 準(zhǔn)備結(jié)束程序");

          		System.exit(0);
      		}
  	});
	ClientExit.start();

     }catch(Exception e){
		//有IO錯(cuò)誤則退出    //關(guān)閉流
		System.out.println("IO Error In Client's logoff() 準(zhǔn)備結(jié)束程序");
		JOptionPane.showMessageDialog(clientframe,
					      "Server connected error!",
					      "Error",
					      JOptionPane.ERROR_MESSAGE);
		System.exit(0);

     }//catch(Exception e)

}//public void logoff()

public boolean isOnline(String RegName){
//由ClientFrame同名方法調(diào)用
	User tempUser;
	int OnUserslen,OffUserslen;
	int i;
	OnUserslen=OnlineUsers.size();
	OffUserslen=OfflineUsers.size();

	
	if(OnUserslen<OffUserslen){	
		for(i=0;i<OnUserslen;i++){
			tempUser=(User)OnlineUsers.get(i);
			if(tempUser.getRegName().equals(RegName)) break;
		}

		if(i==OnUserslen) return false;
		else return true;

	}else{

		for(i=0;i<OffUserslen;i++){
			tempUser=(User)OfflineUsers.get(i);
			if(tempUser.getRegName().equals(RegName)) break;
		}

		if(i==OffUserslen) return true;
		else return false;
	}
}//public boolean isOnline(String RegName)


public User indexToUser(boolean OnlineUserlist,int index){
//由ClientFrame雙擊事件調(diào)用
//要求Jlist中條目與OnlineUsers和OfflineUsers中條目保持一致(下標(biāo)嚴(yán)格對應(yīng))
//這樣就能保證返回值不會(huì)為null

	User tempUser;
	if(OnlineUserlist){
		tempUser=(User)OnlineUsers.get(index);
		return tempUser;
	}else{
		tempUser=(User)OfflineUsers.get(index);
		return tempUser;
	}

}//public String indexToUser(boolean OnlineUserlist,int index)

public int RegNameToindex(String RegName,boolean OnlineUserlist){
//有ClientFrame中RealTimeMsgReceiver(Message msg)調(diào)用
	User tempUser; 
	int len;
	int i;
	if(OnlineUserlist){
		
		len=OnlineUsers.size();
		for(i=0;i<len;i++){
			tempUser=(User)OnlineUsers.get(i);
			if(tempUser.getRegName().equals(RegName)) break;
		}

		
	}else{

		len=OfflineUsers.size();
		for(i=0;i<len;i++){
			tempUser=(User)OfflineUsers.get(i);
			if(tempUser.getRegName().equals(RegName)) break;
		}
	}	


	if(i==len) return -1;
	else return i;

}//public int RegNameToindex(String RegName,boolean OnlineUserlist)

public User RegNameToUser(String RegName){
//由ClientFrame的RealTimeMsgReceiver(Message msg)方法調(diào)用
	User tempuser=null;

	for(int i=0,len=OnlineUsers.size();i<len;i++){
		tempuser=(User)OnlineUsers.get(i);
		if(tempuser.getRegName().equals(RegName))
			break;
	}


	for(int i=0,len=OfflineUsers.size();i<len;i++){
		tempuser=(User)OfflineUsers.get(i);
		if(tempuser.getRegName().equals(RegName))
			break;
	}
	
	return tempuser;
}//public User RegNameToUser(String RegName)


public void run(){
	PublicMessage tempPubMsg;
	Message tempmsg;
	User tempUser;
	char tempConchar;
     try{
	while(!shutdown){

System.out.println("in Client run() while(!shutdown) 準(zhǔn)備接收服務(wù)器的控制字符");

		tempConchar=StreamIn.readChar();
		switch(tempConchar){
			case 'U':{

/*************************以下測試************************************/
//System.out.println("in Client run() case'U'");//\n兩個(gè)Vector中條目修改之前");
///System.out.println("OnlineUsers中內(nèi)容:");
//User testUser;

//for(int i=0,len=OnlineUsers.size();i<len;i++){
//	testUser=(User)OnlineUsers.get(i);
//	testUser.display();
//	System.out.println();
//}

//System.out.println("OfflineUsers中內(nèi)容:");

//for(int i=0,len=OfflineUsers.size();i<len;i++){
//	testUser=(User)OfflineUsers.get(i);
///	testUser.display();
//	System.out.println();
//}

/*************************以上測試************************************/


				tempUser=(User)StreamIn.readObject();

				if(tempUser.getRegName().equals(this.myself.getRegName())) break;
				
				//檢查有沒有重名(RegName相同)
				//防止兩用戶上線時(shí)間很接近后上者在線用戶列表中就會(huì)出現(xiàn)兩個(gè)先上者
				int i,len=OnlineUsers.size();
				for(i=0;i<len;i++){
				    if(((User)OnlineUsers.get(i)).getRegName().equals(tempUser.getRegName())) break;
				}
				if(i==len) OnlineUsers.add(tempUser);//沒有,添加
		
				//如果是OfflineUsers中的用戶上線則OfflineUsers中相應(yīng)條目刪除
				for(i=0,len=OfflineUsers.size();i<len;i++){
				   if(((User)OfflineUsers.get(i)).getRegName().equals(tempUser.getRegName())){
				   	OfflineUsers.removeElementAt(i);
//System.out.println("成功刪除不在線列表中的用戶");
//testUser.display();
				   	break;
				   }//if()
				}//for
//System.out.println("用戶上線后刷新ClientFrame之前");
//System.out.println("OnlineUsers.size()="+OnlineUsers.size());
//System.out.println("OfflineUsers.size()="+OfflineUsers.size());	
			
				clientframe.UpdateUserlist(OnlineUsers,OfflineUsers);
				break;
			}//case 'U':
			case 'D':{
				tempUser=(User)StreamIn.readObject();
				OfflineUsers.add(tempUser);
				
				//如果是OnlineUsers中的用戶下線則OnlineUsers中相應(yīng)條目刪除
				for(int i=0,len=OnlineUsers.size();i<len;i++){
				   if(((User)OnlineUsers.get(i)).getRegName().equals(tempUser.getRegName())){
				   	OnlineUsers.removeElementAt(i);
				   	break;
				   }//if()
				}//for

//System.out.println("用戶下線后刷新ClientFrame之前");
//System.out.println("OnlineUsers.size()="+OnlineUsers.size());
//System.out.println("OfflineUsers.size()="+OfflineUsers.size());

				clientframe.UpdateUserlist(OnlineUsers,OfflineUsers);
				break;
			}//case 'D':
			case 'F':{

System.out.println("準(zhǔn)備接收即時(shí)信息");

				tempmsg=(Message)StreamIn.readObject();

System.out.println("成功接收即時(shí)信息,準(zhǔn)備交付clientframe");

				clientframe.RealTimeMsgReceiver(tempmsg);
				break;
			}//case 'F':
			case 'C':{
				tempPubMsg=(PublicMessage)StreamIn.readObject();
				PubMsglist.add(tempPubMsg);
				clientframe.PubMsgReceiver(tempPubMsg);
				break;
			}//case 'C':
			case 'G':{
				shutdown=true;
				//關(guān)閉流可以沒有
System.out.println("in Client run() while case 'G'準(zhǔn)備結(jié)束程序");
				System.exit(0);
				break;
			}//case 'G':
		}//switch(tempConchar)

	}//while(!shutdown)
     }catch(Exception e){
	System.out.println("IO Error In Client's run()");

	JOptionPane.showMessageDialog(clientframe,
				      "Server connected error,will exit!",
				      "Error",
				      JOptionPane.ERROR_MESSAGE);
	System.exit(0);

     }//catch(Exception e)
}//public void run()
	
public static void main(String args[]){
	new Client();
}//main()
	
	
}//class ServerFrame

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久综合| 成人黄色av电影| 国产精品久久久久久久第一福利 | 久久超碰97人人做人人爱| 国产欧美日韩在线| 欧美精品欧美精品系列| 国产成人午夜高潮毛片| 亚洲不卡在线观看| ㊣最新国产の精品bt伙计久久| 欧美一区二区在线观看| 99久久国产综合精品女不卡| 国内精品在线播放| 日本欧美一区二区在线观看| 亚洲欧美日韩国产综合在线| 欧美精品一区二区三区视频| 欧美日韩国产成人在线免费| 91无套直看片红桃| 国产高清一区日本| 奇米精品一区二区三区四区 | 国产精品每日更新在线播放网址| 欧美一区二区视频在线观看2020| 91视频.com| 成人一级片在线观看| 国产在线观看免费一区| 美女网站色91| 天堂久久久久va久久久久| 一区二区三区在线视频观看 | 亚洲成人av中文| 自拍偷拍国产精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 99视频热这里只有精品免费| 国产精品一区二区在线看| 久久国产婷婷国产香蕉| 天堂午夜影视日韩欧美一区二区| 亚洲一区二区三区在线看| 亚洲嫩草精品久久| 亚洲欧美另类小说| 中文字幕一区av| 亚洲欧洲精品一区二区三区| 国产精品区一区二区三区| 久久久久久99精品| 国产亚洲美州欧州综合国| 久久久国产一区二区三区四区小说| 日韩欧美综合一区| 欧美一区二区精美| 日韩女优制服丝袜电影| 欧美成人艳星乳罩| 欧美xxxx在线观看| 精品黑人一区二区三区久久| 欧美成人午夜电影| 国产人妖乱国产精品人妖| 国产欧美一区在线| 亚洲视频小说图片| 亚洲激情男女视频| 亚洲高清视频中文字幕| 欧美aa在线视频| 国内成+人亚洲+欧美+综合在线| 国产一区二区美女| 成人性生交大片| 色综合天天综合色综合av | 激情图片小说一区| 国产乱码精品1区2区3区| 国产成人免费视| 色国产综合视频| 欧美午夜在线一二页| 欧美一区二区三区免费在线看| 日韩一级大片在线| 久久久精品综合| 亚洲乱码日产精品bd| 五月天中文字幕一区二区| 麻豆国产欧美日韩综合精品二区| 精品一区二区三区免费观看| 菠萝蜜视频在线观看一区| 色伊人久久综合中文字幕| 欧美精品久久99久久在免费线 | 日韩欧美电影在线| 欧美激情一区二区三区四区 | 日一区二区三区| 国产一区二区福利| 色偷偷久久一区二区三区| 91精品国产黑色紧身裤美女| 国产人妖乱国产精品人妖| 亚洲一区二区三区在线播放| 国产在线一区观看| 99精品欧美一区二区三区综合在线| 欧美精品电影在线播放| 国产日韩欧美一区二区三区综合| **欧美大码日韩| 九九国产精品视频| 色婷婷综合久久久中文一区二区| 欧美一级二级三级蜜桃| 国产精品卡一卡二| 狂野欧美性猛交blacked| 99久久伊人久久99| 欧美一区二区三区在线观看视频| 国产精品区一区二区三| 日本不卡一区二区| 色噜噜偷拍精品综合在线| 亚洲精品一区在线观看| 亚洲综合免费观看高清完整版 | 欧美乱熟臀69xxxxxx| 国产精品乱人伦| 蜜桃av一区二区三区| 色哦色哦哦色天天综合| 精品久久久久久最新网址| 日韩精品最新网址| 亚洲国产sm捆绑调教视频| 成人18视频在线播放| 欧美刺激午夜性久久久久久久| 亚洲精品老司机| 成人免费精品视频| 久久午夜羞羞影院免费观看| 亚欧色一区w666天堂| 色综合色综合色综合色综合色综合| 精品三级在线看| 丝袜诱惑制服诱惑色一区在线观看 | 国产成人啪免费观看软件| 日韩午夜激情免费电影| 亚洲国产视频一区| 色婷婷狠狠综合| 亚洲欧洲日韩女同| 国产成a人亚洲| 久久蜜桃一区二区| 黑人巨大精品欧美一区| 欧美一级片在线看| 午夜不卡av在线| 91福利区一区二区三区| 国产精品久久福利| 成人性视频免费网站| 国产嫩草影院久久久久| 狠狠v欧美v日韩v亚洲ⅴ| 欧美成人一区二区三区片免费| 日韩和欧美的一区| 91福利国产成人精品照片| 日韩美女视频一区| 99re视频精品| 最新热久久免费视频| 99久久婷婷国产综合精品电影| 国产精品午夜在线观看| 岛国av在线一区| 国产精品国产自产拍高清av王其 | 亚洲一卡二卡三卡四卡| 欧美性猛交xxxxxx富婆| 亚洲午夜免费电影| 欧美无砖专区一中文字| 五月婷婷久久丁香| 欧美一区二区三区在线电影| 全国精品久久少妇| 欧美一区二区三区四区高清| 日本网站在线观看一区二区三区| 宅男噜噜噜66一区二区66| 视频一区二区国产| 日韩欧美国产不卡| 国产精品一卡二| 亚洲视频综合在线| 欧美日韩另类一区| 免费观看在线色综合| wwwwww.欧美系列| 国产成人综合在线观看| 国产精品免费久久| 在线中文字幕一区二区| 人禽交欧美网站| 国产欧美日韩精品a在线观看| zzijzzij亚洲日本少妇熟睡| 日韩毛片一二三区| 在线区一区二视频| 日本成人在线网站| 国产日韩av一区| 一本大道久久a久久精二百| 亚洲亚洲精品在线观看| 精品日韩欧美在线| 成人激情图片网| 亚洲大片在线观看| 久久综合久色欧美综合狠狠| 91视频免费观看| 日韩中文字幕亚洲一区二区va在线| 欧美变态tickle挠乳网站| 成人av中文字幕| 天天亚洲美女在线视频| 国产日本亚洲高清| 欧美日韩精品免费观看视频 | 色8久久精品久久久久久蜜| 日韩国产精品大片| 国产精品乱码久久久久久 | 国产精品美女久久久久高潮| 欧美三日本三级三级在线播放| 理论电影国产精品| 亚洲欧美色图小说| 2023国产精品自拍| 在线观看免费亚洲| 国产成人免费在线| 日韩电影免费在线观看网站| 国产精品国产三级国产aⅴ中文| 7777精品久久久大香线蕉| 国产不卡视频一区| 欧美a一区二区| 亚洲一区av在线| 国产精品女同一区二区三区| 欧美一区二区视频免费观看| 91香蕉国产在线观看软件|