⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverreceivethread.java

📁 模仿腾讯QQ的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
						HashMap updowndata = new HashMap();									
						updowndata.put("COMPANY", getCompany());								
						SrcPackage  downlinePackage = new SrcPackage() ;								
						downlinePackage.setData(updowndata);
						downlinePackage.setFrom(SrcPackage.SERVER_ID);
						downlinePackage.setTo(revPackage.getFrom());
						downlinePackage.setType(SrcPackage.DOWNLINE_TYPE);
						downlinePackage.setTomeno(revPackage.getTomeno());								
						
						//群发下线包
						Iterator it  = totalThread.iterator();

						while(it.hasNext()){									
							ServerReceiveThread srt = (ServerReceiveThread)it.next();	
							if (!srt.getUno().equals(revPackage.getFrom())){
								if (srt.isAlive()){	
									//发送下线包
									try {		
										srt.getOos().writeObject(downlinePackage);
										srt.getOos().flush();								
										Thread.sleep(500);
										
									} catch (IOException e) {
										// TODO 自动生成 catch 块
									
										break;
									}						
								}
							}
						}
					}//密码修改包
					if (revPackage.getType().equals(SrcPackage.SET_PWD_TYPE)) {
						boolean tag = false;
						IUserDAO usrdao = new ImplementUserDAO();
						List userlist = new ArrayList();
						TUser user = new TUser();						
						userlist = usrdao.select(revPackage.getFrom(),"","","");
						user.setUNO(((String)((List)(userlist.get(0))).get(0)).trim());

						user.setUNAME(((String)((List)(userlist.get(0))).get(1)).trim());
						user.setUTERM(((String)((List)(userlist.get(0))).get(2)).trim());
						user.setUSEX(((String)((List)(userlist.get(0))).get(3)).trim());
						user.setUICONID(((String)((List)(userlist.get(0))).get(4)).trim());
						user.setUAGE(((String)((List)(userlist.get(0))).get(5)).trim());
						user.setDNO(((String)((List)(userlist.get(0))).get(13)).trim());
						user.setUPHONE(((String)((List)(userlist.get(0))).get(7)).trim());
						user.setUADDRESS(((String)((List)(userlist.get(0))).get(8)).trim());
						user.setULASTLOGINTIME(((String)((List)(userlist.get(0))).get(10)).trim());
						user.setUREGDATE(((String)((List)(userlist.get(0))).get(9)).trim());
						user.setULOGINCOUNT(((String)((List)(userlist.get(0))).get(11)).trim());
						user.setUISONLINE(((String)((List)(userlist.get(0))).get(12)).trim());
						if(usrdao.del(revPackage.getFrom())){
							user.setUPASSWORD(revPackage.getTomeno());
							tag = userdao.add(user);
							
							//发确认包
							if (tag){
								okpwdPackage = new SrcPackage();
								okpwdPackage.setFrom(SrcPackage.SERVER_ID);
								okpwdPackage.setTo(revPackage.getFrom());
								okpwdPackage.setData(null);								
								okpwdPackage.setType(SrcPackage.OK_PWD_TYPE);
								
								Iterator it  = totalThread.iterator();
								while(it.hasNext()){									
									ServerReceiveThread srt = (ServerReceiveThread)it.next();	
									if (srt.getUno().equals(revPackage.getFrom())){
										if (srt.isAlive()){	
											//发送下线包
											try {		
												okpwdPackage.setTomeno("Y");
												srt.getOos().writeObject(okpwdPackage);
												srt.getOos().flush();								
												Thread.sleep(200);
												System.out.println("ok");
												
											} catch (IOException e) {
												// TODO 自动生成 catch 块
											
												break;
											}						
										}
									}
								}
								
							}else{
//								群发下线包
								Iterator it  = totalThread.iterator();

								while(it.hasNext()){									
									ServerReceiveThread srt = (ServerReceiveThread)it.next();	
									if (srt.getUno().equals(revPackage.getFrom())){
										if (srt.isAlive()){	
											//发送下线包
											try {		
												okpwdPackage.setTomeno("N");
												srt.getOos().writeObject(okpwdPackage);
												srt.getOos().flush();								
												Thread.sleep(200);
												
											} catch (IOException e) {
												// TODO 自动生成 catch 块
											
												break;
											}						
										}
									}
								}
							}
							
						}					
						
					}
					
					
//					文件询问包
					if (revPackage.getType().equals(SrcPackage.FILESEND_TYPE)) {						
						Iterator it  = totalThread.iterator();
						while(it.hasNext()){									
							ServerReceiveThread srt = (ServerReceiveThread)it.next();	
							if (srt.getUno().equals(revPackage.getTo())){
								System.out.println("server sended file");
								if (srt.isAlive()){	
									//发送下线包
									try {		
										srt.getOos().writeObject(revPackage);
										srt.getOos().flush();								
										Thread.sleep(200);
										
									} catch (IOException e) {
										// TODO 自动生成 catch 块
									
										break;
									}						
								}
							}
						}						
						
					}
					//文件确认包
					if (revPackage.getType().equals(SrcPackage.FILEREV_TYPE)) {						
						Iterator it  = totalThread.iterator();
						while(it.hasNext()){									
							ServerReceiveThread srt = (ServerReceiveThread)it.next();	
							if (srt.getUno().equals(revPackage.getFrom())){
								System.out.println("server rev file");
								if (srt.isAlive()){	
									//发送下线包
									try {		
										srt.getOos().writeObject(revPackage);
										srt.getOos().flush();								
										Thread.sleep(200);
										
									} catch (IOException e) {
										// TODO 自动生成 catch 块
									
										break;
									}						
								}
							}
						}						
						
					}
					//文件结束包
					if (revPackage.getType().equals(SrcPackage.FILEEND_TYPE)) {						
						Iterator it  = totalThread.iterator();
						while(it.hasNext()){									
							ServerReceiveThread srt = (ServerReceiveThread)it.next();
//							if (srt.getUno().equals(revPackage.getTo())){								
								if (srt.isAlive()){	
									//发送下线包
									try {		
										srt.getOos().writeObject(revPackage);
										srt.getOos().flush();								
										Thread.sleep(200);
										System.out.println("server end file success");
										
									} catch (IOException e) {
										// TODO 自动生成 catch 块
									
										break;
									}						
								}
//							}
						}						
						
					}
			
				} catch (IOException e) {
					// TODO 自动生成 catch 块
//					e.printStackTrace();
//					managerpanel.getMymanlistener().stopServer();
//					JOptionPane.showMessageDialog(null, "服务器已关闭,为保证所有用户运行正常,请重新启动服务器!", "提示",JOptionPane.INFORMATION_MESSAGE);
					
					tag=true;
					break;
					
				} catch (ClassNotFoundException e) {
					// TODO 自动生成 catch 块
					e.printStackTrace();
					tag=true;
					break;		
				} catch (InterruptedException e) {
					// TODO 自动生成 catch 块
					tag=true;
					e.printStackTrace();
					break;
				}	
				
		}
	}

	/**
	 * 包装公司类
	 * @return
	 */
	static public TCompany getCompany(){
		
		TCompany company = new TCompany();
		company.setName("博洋教育");
		List luser = null;
		List ldept  = new ArrayList();
		ldept = deptdao.select("",""); //取出部门
		
		TDepartment[] dep = new TDepartment[ldept.size()];
		
		for( int j = 0 ;j < ldept.size() ;j++){	
			
			dep[j] = new  TDepartment();
			dep[j].setDno((String)((List)ldept.get(j)).get(0));
			dep[j].setDname((String)((List)ldept.get(j)).get(1));
			dep[j].setDsaffiche((String)((List)ldept.get(j)).get(2));
		
			luser = new ArrayList();
			luser = userdao.select("","",dep[j].getDno(),"");//取出用户
			TUser[] user = new TUser[luser.size()];
			
			for(int k = 0 ;k<luser.size();k++){			
				
				user[k]= new TUser();
				user[k].setUNO((String)((List)luser.get(k)).get(0));
				user[k].setUNAME((String)((List)luser.get(k)).get(1));
				user[k].setUTERM((String)((List)luser.get(k)).get(2));
				user[k].setUICONID((String)((List)luser.get(k)).get(4));
				user[k].setUISONLINE((String)((List)luser.get(k)).get(12));
				user[k].setUPASSWORD((String)((List)luser.get(k)).get(15));
				dep[j].addUser(user[k]);
			}
			company.addDept(dep[j]);

		}

		return company;
		
	}

	/**
	 * 获取客户端的输入流
	 * @return
	 */
	public ObjectInputStream getOis() {
		return ois;
	}
	/**
	 * 获取客户端的输出流
	 * @return
	 */
	public ObjectOutputStream getOos() {
		return oos;
	}

	/**
	 * 获取客户端的用户编号
	 * @return
	 */
	public String getUno() {
		return uno;
	}
	/**
	 * 获取客户端的 dao实例
	 * @return
	 */
	public IUserDAO getUserdao() {
		return userdao;
	}
	/**
	 * 获取客户端的用户信息
	 * @return
	 */
	public TUser getUsr() {
		return usr;
	}
	/**
	 * 获取客户端的部门编号
	 * @return
	 */
	public String getDno() {
		return dno;
	}
	/**
	 * 获取客户端的昵称
	 * @return
	 */
	public String getUtrem() {
		return utrem;
	}
	/**
	 * 获取客户端socket
	 * @return
	 */
	public Socket getClientSocket() {
		return clientSocket;
	}

	/**
	 * 设置线程的循环的变量
	 * @param tag
	 */
	public void setTag(boolean tag) {
		this.tag = tag;
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -