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

📄 server.java

📁 JAVA聊天室 即使通讯
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.*;

////////////////////////////////////////////小布点---服务器端


public class Server extends Thread
{
	ServerSocket server;
	Connection c;
	DataOutputStream writer;
	
	//boolean bo;
	Socket sock ;
	HashMap map;
	Vector v;
	 
	public Server()
	{   
		try
		{	
			
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载JDBC驱动
			c = DriverManager.getConnection("jdbc:odbc:chatbo","sa","");//将JDBC ODBC联系起来,连接上数据源	
			server = new ServerSocket(9990);	//开启服务端口
			System.out.println("服务器正在启动");
			
			map=new HashMap();
  	   	    v=new Vector(); 
  	   		  
		}
		catch(Exception e)
		{
			System.out.println(e);
	        e.printStackTrace();
	
		}
		
	
		this.start();
	}
	public void run()
	{	//监听线程
		while(server != null)
		{			
			try{
				//监听并接受客户端的请求
				Socket soc = server.accept();
				System.out.println("正在监听");
				//为每个连接上来的客户端启动一个线程
				//该线程用于和客户交换信息,故以该客户的socket为参数
				new EveryClientThread(soc);
			   
			   
			   }
			catch(Exception e){e.printStackTrace();}
		}	
		
	};	
	class EveryClientThread extends Thread
	{
		Socket sock ;
		//ObjectInputStream in;
		PreparedStatement ps;
		public EveryClientThread(Socket s)
		{
			sock = s;
//			try
//			{
//				//因客户端传递过来的是对象,故用对象流包装
//				in = new ObjectInputStream(sock.getInputStream());
//			}catch(Exception e)
//			{
//				System.out.println(e);
//		        e.printStackTrace();
//		
//			}
			this.start();
		}
		public void run()
		{
			
			while(true)
			{
		 
		        	Object obj;
		        	
				try
				{
				ObjectInputStream	in = new ObjectInputStream(sock.getInputStream());
					obj = in.readObject();
					
				
											
//****************************************登录 解包**********************************************************************			
				
				
				//判断传递过来的是否是UserInfo的实例
					if(obj instanceof UserInfo)  
					{
						boolean b;
						UserInfo user = (UserInfo)obj;
						//解包
						String name = user.getUserName();
						String pwd = user.getUserPwd();
						System.out.println("名字: "+name);
						System.out.println("密码: "+pwd);
						//准备发送SQL语句
						ps = c.prepareStatement("select * from UserInfo02 where userName=? and userPwd=?");
						ps.setString(1,name);
						ps.setString(2,pwd);
						//执行SQL语句,得到结果集
						ResultSet result = ps.executeQuery(); //  类型俩边要相符合
						//判断是否有相关记录
						b = result.next();
						//关闭连接
						result.close();
						ps.close();
						//sock.close();
						try
						{
    	       	    
			
                    	writer = new DataOutputStream(sock.getOutputStream());
						writer.writeBoolean(b);
					
						writer.flush();
						System.out.println(b);
						System.out.println("登录传送完成!come on! ");
		      			}
		      			
		      			catch(Exception e){e.printStackTrace();}
		      				
						System.out.println(b);
			         if(b)
		       	     {  
		       	     	map.put(user.getUserName(),sock);
		       	     	v.add(user.getUserName());
		       	        new liebiao();
		       	     } 
					}					
			      
//*************************************注册 解包*************************************************		
          		 
			      //判断传递过来的是否是UserRegistrg的实例
			       
					if(obj instanceof UserRegistrg)  
					{	
						try
					  {
						boolean bo;
						UserRegistrg u = (UserRegistrg)obj;
						//解包
						String name    = u.getUserName();
						String pwd     = u.getUserPwd();
						String Age     = u.getlabelAge();
						String label06 = u.getlabel06();
						String label08 = u.getlabel08();
						
						System.out.println("注册名字: "+name);
						System.out.println("注册密码: "+pwd);
						System.out.println("注册用户信息-年龄: "+Age);
						System.out.println("注册用户信息-回答问题1: "+label06);
				        System.out.println("注册用户信息-回答问题2: "+label08); 
					
						
						//准备发送SQL语句
						ps = c.prepareStatement("Insert into UserInfo02 (userName,userPwd,Age,Answer01,Answer02) values(?,?,?,?,?)");
						ps.setString(1,name);
						ps.setString(2,pwd);
						ps.setString(3,Age);
						ps.setString(4,label06);
						ps.setString(5,label08);
						
						//执行SQL语句,得到结果集
						int res = ps.executeUpdate();
										
						
						//关闭连接
						ps.close();
						
						try
						{
    	       	    
			
                    	writer = new DataOutputStream(sock.getOutputStream());
						writer.writeInt(res);
					
						writer.flush();
						System.out.println(res);
						System.out.println("注册传送完成!come on!");
		      			}
		      			catch(Exception e1){e1.printStackTrace();}	
						
					  }
					    catch(Exception e1)
					    {		
						System.out.println(e1);
	        			e1.printStackTrace();
				        }
				    }
//***************************************************************************************************************				    
				    
//*******************************忘记密码 解包*************************************************************				    
				 
				  //判断传递过来的是否是UserUpateInfo的实例
				  
				    if(obj instanceof UserUpateInfo)  
					{	
						try
					  {
						boolean bo;
						UserUpateInfo us  =  (UserUpateInfo)obj;
						
					//////////////////////解   包///////////////////////////
					
						String name       =  us.getUserName();
						String jltopic1   =  us.getjltopic1();
						String jltopic2   =  us.getjltopic2();
						String jltopic3   =  us.getjltopic3();

						
						System.out.println("用户忘记密码--用户名: "+name);
						System.out.println("用户忘记密码--回答问题答案1: "+jltopic1);
						System.out.println("注册用户信息-回答问题答案2: "+jltopic2);
					//	System.out.println("注册用户信息-回答问题答案3: "+jltopic3);

								
						//准备发送SQL语句
						ps = c.prepareStatement("select UserPwd from UserInfo02 where userName=? and answer01=? and answer02=?");
						ps.setString(1,name);
						ps.setString(2,jltopic1);
						ps.setString(3,jltopic2);
					//	ps.setString(4,jltopic3);
			
						
						//执行SQL语句,得到结果集
						ResultSet result = ps.executeQuery();
					    
//					   //判断是否有相关记录
						bo = result.next();
						String pwd = "";
						if(bo)
						{
							pwd = result.getString(1);
						}
							
						//关闭连接
						result.close();

									
						
	    				//关闭连接
						ps.close();
						
						
						try
						{
    	       	    
			
                    	writer = new DataOutputStream(sock.getOutputStream());
						writer.writeUTF(pwd);
					
						writer.flush();
						System.out.println(pwd);
						System.out.println("忘记密码送完成!come on!");
				
						
 //JOptionPane.showMessageDialog(pwd);
		      		
		      			}
		      			catch(Exception e2){e2.printStackTrace();}	
		      			
		      			System.out.println("恭喜您-您的用户密码是: "+pwd);
						
					  }
					    catch(Exception e2)
					    {		
						System.out.println(e2);
	        			e2.printStackTrace();
				        }
				   
				   
				   
				    }
				    
				    
				    
//************************* 修 改 资 料 解 包 区 **********************************************				    
		
		//&***************************** //判断传递过来的是否是UserRetake的实例		  
				  
				    if(obj instanceof UserRetake)  
					{	
						try
					  {
						boolean bo;
						UserRetake rt = (UserRetake)obj;
						//解包
						String Name    = rt.getUserName();
						String number     =rt.getnumber();
						String realName     =rt.getrealName();
						String school = rt.getschool();
						String HomePage =rt.getHomePage();
						
						System.out.println("用户帐号 "+number);
						System.out.println("用户呢称: "+Name);
						System.out.println("真实姓名: "+realName);
						System.out.println("毕业学校: "+school);
				        System.out.println("个人主页 "+HomePage); 
					
						
						//准备发送SQL语句
						ps = c.prepareStatement("update UserInfo02 set realName=?,usershool=?,age=?,userHomePage=? where userName=? ");
					    ps.setString(1,Name);
						ps.setString(2,number);	
						ps.setString(3,realName);
						ps.setString(4,school);
						ps.setString(5,HomePage);
						//执行SQL语句,得到结果集
						int rr = ps.executeUpdate();
									
						
						//关闭连接
						ps.close();
						
						try
						{
    	       	    
			
                    	writer = new DataOutputStream(sock.getOutputStream());
						writer.writeInt(rr);
					
						writer.flush();
						System.out.println(rr);
						System.out.println("修改传送完成!come on!");
		      			}
		      			catch(Exception eee){eee.printStackTrace();}	
						
					  }	 catch(Exception eee)
					    {		
						System.out.println(eee);
	        			eee.printStackTrace();
				        }   
					    
				    }
				    
			
//************************************公聊
			  		if(obj instanceof Message)
					{  
					    Message m;
					    ServerResults sr = new ServerResults();
					    sr.setstatue(1);
						m=(Message)obj;
					    int flag=m.getflag();
					    System.out.println(flag);
					     
					    if(flag==0)            
					    {  if(!map.isEmpty()) 
			   	   	       {   
			   	   	          System.out.println("公聊");	
			   	   	  	      Iterator i=map.keySet().iterator();
			   	   	          while(i.hasNext())
			   	   	  	      {  try
			   	   	  	          { Object obj1=i.next();
			   	   	  	            Socket soc=(Socket)map.get(obj1);
			   	   	  	            sr.setMessage1(m);			   	   	  	            
			   	   	  	            ObjectOutputStream oos = new ObjectOutputStream(soc.getOutputStream()); 
			   	   	  	             	  	     
							        oos.writeObject(sr);
							        oos.flush();
						        }   catch(Exception e) { e.printStackTrace();  }	
			   	   	  	    }
			   	   	  	    }  	   	  	
			   	   	     }
				
                      
//******************************************私聊
					    if(flag==1)      
					    {  
					       System.out.println("私聊");
					       Socket soc=(Socket)map.get(m.getsender());
					       Socket soc1=(Socket)map.get(m.getaccept());
					       ObjectOutputStream oos = new ObjectOutputStream(soc.getOutputStream()); 
					       ObjectOutputStream oos1 = new ObjectOutputStream(soc1.getOutputStream());   	   	  	     
						   sr.setMessage1(m);
						   oos.writeObject(sr);  	   	  	     
						   oos1.writeObject(sr);
						   oos.flush();
			               oos1.flush();
					    }		
					}
		}catch(Exception e){e.printStackTrace();}
				    
//	////////////////////////////////////////////////////////		    
	}}}
	
	public static void main(String[] args)
	{
		new Server();
	}
	class liebiao extends Thread
	{   
	 
       public liebiao()  //在线用户列表
       {
          
          this.start();
       }
   	   public void run()
   	   {
   	   	  if(!map.isEmpty()) 
   	   	  {	
   	   	  	Iterator i=map.keySet().iterator();
   	   	  	while(i.hasNext())
   	   	  	{  try
   	   	  	   { Object obj=i.next();
   	   	  	     Socket soc=(Socket)map.get(obj);
   	   	  	     ServerResults server = new ServerResults();
   	   	  	     server.setVoctor(v);
   	   	  	     System.out.println(v);
		       	 server.setstatue(0);
		       	 System.out.print("server 298");
   	   	  	    ObjectOutputStream oos = new ObjectOutputStream(soc.getOutputStream());   	   	  	     
				 oos.writeObject(server);
				 System.out.println( server.getVoctor());
			   } catch(Exception e) { e.printStackTrace();  }	
   	   	    }   	  	
   	      }
       }   
    }
}  
 

⌨️ 快捷键说明

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