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

📄 server.java

📁 一个自己用JAVA写的聊天程序,希望对大家游泳
💻 JAVA
字号:
package liaotian;import java.util.*;import java.sql.*;import java.io.*;import java.net.*;class getclien extends Thread{		private Socket socket;	private DataInputStream in;	private DataOutputStream out;	private ThreadGroup comgroup;    private String  usernumber = null;	private String password = null;    private String username = null;    public int flagdestroy = 0;		public getclien(Socket socket,ThreadGroup comgroup)		throws IOException {		super(comgroup,"thgroup");			this.comgroup = comgroup;						this.socket = socket;		    in = new DataInputStream(socket.getInputStream());		    out = new DataOutputStream(socket.getOutputStream());		    start();	 }	public void run(){		 String sql;		 String sqls;		try{			while (true) {  				String str = in.readUTF();			        System.out.println(username);				//注册用户				if(str.equals("@reg")){					username = in.readUTF();                                        String  usersex=in.readUTF();					password = in.readUTF();                                        try{                                            Random  n=new Random();                                            int number=n.nextInt(100000);                                            out.writeInt(number);                                            //String sql;                                            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//连接数据库                                            Connection con=DriverManager.getConnection("jdbc:odbc:xsgl","","");                                            Statement stmt = con.createStatement();                                             sql="insert into userstable(Icqno,Nickname,Password,Sex)";                                            sql=sql+"values('"+number+"','"+username+"','"+password+"','"+usersex+"')";                                            try{                                                 stmt.executeUpdate(sql);                                            }catch(Exception x){x.printStackTrace();}                                     }catch (Exception x){x.printStackTrace();}                                }			//登录				if(str.equals("@logon")){					 usernumber = in.readUTF();					 password = in.readUTF();                                                                                 try{                                              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//连接数据库                                             Connection c=DriverManager.getConnection("jdbc:odbc:xsgl"," "," ");                                             Statement stmt = c.createStatement();                                             ResultSet rs = stmt.executeQuery("SELECT icqno,password,Nickname FROM userstable");                                             //ResultSet onlineuser=stmt.executeQuery("select icqno,Nickname FROM userstable where status='1'");                                                                                     while(rs.next()){                                                String icqnumber=rs.getString("icqno").trim();                                                String passwd=rs.getString("password").trim();                                                 username=rs.getString("Nickname").trim();                                                if(usernumber.equals(icqnumber) && password.equals(passwd)) {                                                                                                      String ipno=in.readUTF();                                                    System.out.println(ipno);                                                    sqls="update userstable set IP='"+ipno+"',status='1' where Icqno LIKE  '"+icqnumber+"'" ;                                                    stmt.executeUpdate(sqls);                                                    out.writeUTF("OK");                                                    //ResultSet onlineuser=stmt.executeQuery("select icqno,Nickname FROM userstable where status='1'");                                                    getclien[] list = new getclien[comgroup.activeCount()]; //告诉所有已在线用户新用户登陆						                            System.out.print(list.length);						                            comgroup.enumerate(list,false);                                                    //System.out.println(username);						                            for(int i = 0; i < list.length; i ++){						                            	ResultSet onlineuser=stmt.executeQuery("select icqno,Nickname FROM userstable where status=1");							                            DataOutputStream  otout = new DataOutputStream(list[i].socket.getOutputStream());							                            otout.writeUTF("message");                                                        otout.writeUTF(username+ ": 进入聊天室");                                                        otout.writeUTF("listrefresh");                                                        //otout.writeInt(no);                                                       while(onlineuser.next()){                                                           otout.writeUTF(onlineuser.getString("icqno").trim()+"  "+onlineuser.getString("Nickname").trim());                                                                                                                    }                                                        otout.writeUTF("END");						    }                                                }                                             }                                             out.writeUTF("failed");                                         }catch (Exception ee){ee.printStackTrace();}					 				}							//离开				if(str.equals("@leave")){				    try{						Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//连接数据库                        Connection c=DriverManager.getConnection("jdbc:odbc:xsgl"," "," ");                        Statement stmt = c.createStatement();                        sqls="update userstable set status='0' where Icqno LIKE  '"+usernumber+"'" ;                        stmt.executeUpdate(sqls);										    System.out.println("ICQ DE HAO MA"+usernumber);					    getclien[] list = new getclien[comgroup.activeCount()]; 					    System.out.print(list.length);					    comgroup.enumerate(list,false);										    for(int i = 0; i < list.length; i ++){					    	ResultSet onlineuser=stmt.executeQuery("select Nickname,icqno FROM userstable where status=1");						    DataOutputStream  otout = new DataOutputStream(list[i].socket.getOutputStream());						    otout.writeUTF("message");						    otout.writeUTF(username + ": 离开聊天室");						    otout.writeUTF("listrefresh");						    while(onlineuser.next()){						    	otout.writeUTF(onlineuser.getString("Nickname").trim()+"  "+onlineuser.getString("icqno").trim());                                                         }                           otout.writeUTF("END");					     }                         socket.close();                         flagdestroy = 1;					break;				    }catch(Exception ee){}				}				if(str.equals("@publicmessage")){					String strs=in.readUTF();					getclien[] list = new getclien[comgroup.activeCount()]; 					System.out.print(list.length);					comgroup.enumerate(list,false);					for(int i = 0; i < list.length; i ++){						DataOutputStream  otout = new DataOutputStream(list[i].socket.getOutputStream());						otout.writeUTF("message");												otout.writeUTF(username+":"+strs);					}					//break;				}				if(str.equals("@selfmessage")){					String selfuserinfo = in.readUTF();					String selfmsg =  in.readUTF();					System.out.println("34df"+selfuserinfo);					int blankindex = selfuserinfo.indexOf("  ");					System.out.println("blanknumber"+blankindex);								        String b = "1234567890";			        String a = b.substring(5);			        System.out.println("atest  " +a);										String selfnumber = selfuserinfo.substring(0,blankindex);					String selfname = selfuserinfo.substring(blankindex + 2);					System.out.println("number  "+ selfname);					getclien[] list = new getclien[comgroup.activeCount()]; 					System.out.print(list.length);					comgroup.enumerate(list,false);					int i = 0;					for(i = 0; i < list.length; i ++ ){						if(list[i].usernumber.equals(selfnumber)){							System.out.println("list length"+ list.length);							System.out.println("inner number"+ i);							out.writeUTF("message");							out.writeUTF("我对 " + selfname + "悄悄说 " + selfmsg);							//DataOutputStream  otout = new DataOutputStream(list[i].socket.getOutputStream());							//otout.writeUTF("message");							list[i].out.writeUTF("message");							//otout.writeUTF(username+":"+in.readUTF());							list[i].out.writeUTF(username + " 对我悄悄说 " + selfmsg);														break;						}					}										System.out.println("error i:" + i);										if(i >= list.length){																	}				}			}			}catch(IOException e) {			System.out.println("Datatransfer error");				}		try{			in.close();                                                                                             //socket.close();		}catch(IOException e) {					}			}}public class Server {	static final int PORT = 6000;	static ThreadGroup comgroup = 	new ThreadGroup("thgroup");	/**	 * @param args	 */	public static void main(String[] args) 	  throws IOException {		ServerSocket s = new ServerSocket(PORT);				ThreadGroup comgroup = 	new ThreadGroup("thgroup");		    System.out.println("Server Started");	    try {	      while(true) {	        Socket socket = s.accept();	        try {	        	getclien aclien =  new getclien(socket,comgroup);                         if(aclien.flagdestroy == 1){                            aclien.interrupt();                           //    System.out.println("active count::::::::"+comgroup.activeCount());                            //  aclien.                            aclien = null;                         }                         	        } catch(IOException e) {	          socket.close();            	        }                    	      }	    } finally {	      s.close();	    }	}}

⌨️ 快捷键说明

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