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

📄 javachatcode.txt

📁 小小的java聊天室源代码 希望对初学者有帮助!
💻 TXT
📖 第 1 页 / 共 5 页
字号:
     }
     sout_2.flush();
    }
   }
   else if(msg.equals("/SILIAO")){
    insertmsg(2);
    socket_2 =  srv_user_ob.getSocket();
    sout_2 = new PrintWriter(new OutputStreamWriter(socket_2.getOutputStream()));
    sout_2.println("/TALK");
    //对说话者发送私聊的消息.
    for (int i2 = 0; i2 < sline.size(); i2++){
     sout_2.println((String) sline.elementAt(i2));
    }
    sout_2.flush();
    //对说话的对象发送私聊的消息
    for (int i = 0; i < Server.srv_userlist.size(); i++){
     if (who.equals(((server_user_ob)Server.srv_userlist.elementAt(i)).getUsername())){
      socket_2 =  ((server_user_ob) Server.srv_userlist.elementAt(i)).getSocket();
      sout_2 = new PrintWriter(new OutputStreamWriter(socket_2.getOutputStream()));
      sout_2.println("/TALK");
      for (int i2 = 0; i2 < sline.size(); i2++){
       sout_2.println((String) sline.elementAt(i2));
      }
      sout_2.flush();
      break;
     }
    }
   }
   else if(msg.equals("/lessuser")){
    for (int i = 0; i < Server.srv_userlist.size(); i++){
     socket_2 =  ((server_user_ob) Server.srv_userlist.elementAt(i)).getSocket();
     sout_2 = new PrintWriter(new OutputStreamWriter(socket_2.getOutputStream()));
     sout_2.println("/lessuser");
     sout_2.println(srv_user_ob.getNickname());
     sout_2.flush();
    }
   }
   else if(msg.equals("/adduser")){
    for (int i = 0; i < Server.srv_userlist.size(); i++){
     socket_2 =  ((server_user_ob) Server.srv_userlist.elementAt(i)).getSocket();
     sout_2 = new PrintWriter(new OutputStreamWriter(socket_2.getOutputStream()));
     sout_2.println("/adduser");
     sout_2.println(srv_user_ob.getUsername());
     sout_2.println(srv_user_ob.getNickname());
     sout_2.flush();
    }
   }
   
  }catch (IOException e) {
   //e.printStackTrace();
   log.println((new Date()).toString()+" "+srv_user_ob.getUsername()+" connection break");
   log.flush();
   
   close();
   return;
  }
 }

public void run() {
  String line, pass,manager;
  PrintWriter sout_2;
  Socket socket_2;
  String ls_user;
  String ls_dowhat;
  // login auth
  try {
   ls_dowhat=sin.readLine();
   if (ls_dowhat.equals("login")){
    ls_user = sin.readLine();
    pass = sin.readLine();
    manager = sin.readLine();
    checkLogin(ls_user, pass,manager);
   }
   else if (ls_dowhat.equals("regedit")){
    reguser();
    return;
   }
   else if (ls_dowhat.equals("checksameuserid")){
    check_same_userid();
    return;
   }
   else if (ls_dowhat.equals("/request_ini")){
    sout.println(Server.serverName);
    sout.println(Server.portNumber);
    sout.println(Server.databaseName);
    sout.println(Server.userName);
    sout.println(Server.password);
    sout.flush();
    close();
    return;
   }
  } catch (IOException e) {
   //e.printStackTrace();
   sout.println("auth fail");
   sout.flush();
   System.out.println("connection break");
   close();
   return;
  } catch (AuthException e) {
   //e.printStackTrace();
   if (e.toString().equals("same user login")){
    sout.println("same user login");
    sout.flush();
   }
   else if (e.toString().equals("user waiting confirm")){
    sout.println("user waiting confirm");
    sout.flush();
   }else{
    
    sout.println("auth fail");
    sout.flush();

   }
   System.out.println("auth fail");
   close();
   return;
  }
  sout.println("login succ");
  sout.flush();
  Server.srv_userlist.addElement(srv_user_ob);
  sendmsgtoall("/RefreshUserList","所有人");
  sendmsgtoall("/adduser","所有人");
  try {
   while (true) {
    line = sin.readLine();
    if (line.equals( "/logout")) break;
    if (line.equals("/TALK"))
    {
     //
     while (line.equals("TALK/") == false){
      line = sin.readLine();
      sline.addElement(line);
     }
     sendmsgtoall("/TALK","所有人");
     sline.clear();
     
    }
    if (line.equals("/SILIAO"))
    {
     String towho;
     towho=sin.readLine();
     while (line.equals("TALK/") == false){
      line = sin.readLine();
      sline.addElement(line);
     }
     sendmsgtoall("/SILIAO",towho);
     sline.clear();
    }
   }
  } catch (IOException e) {
   //e.printStackTrace();
   close();
   return;
  }
 }
 public void checkLogin(String user, String pass,String manager) throws AuthException {
  boolean b1;
  String nickname;
  user_db user_db1;
  String username;
  user_db1=new user_db();
  b1=user_db1.con_db();
  if(b1){
   if (user_db1.Check_user_pass(user,pass,manager)) {
    //登录成功
    nickname=user_db1.get_user_nickname(user);
    srv_user_ob.setUsername(user);
    srv_user_ob.setNickname(nickname);
    for (int i = 0; i < Server.srv_userlist.size(); i++){
     username=((server_user_ob)Server.srv_userlist.elementAt(i)).getUsername();
     if (username.equals(user)){
      LoginSucc=false;
      throw new AuthException("same user login");
     }
    }
    if (user_db1.check_user_regsuc(user)==false) throw new AuthException("user waiting confirm");
    log.println((new Date()).toString()+" "+user + " login succ");
    log.flush();
    LoginSucc=true;
    return;
   }else
   {
    //登录失败
    LoginSucc=false;
    log.println((new Date()).toString()+" "+user + " login fail");
    log.flush();
    throw new AuthException("login fail");
   }
  }
  else{
   log.println((new Date()).toString()+" "+user + " login fail(DB CONNECT FAILE)");
   log.flush();
   throw new AuthException("login fail");
  }
 }
 
 public void check_same_userid(){
  boolean b1;
  String ls_username;
  user_db user_db1;
  try{
   ls_username=sin.readLine();
   user_db1=new user_db();
   b1=user_db1.con_db();
   if(b1){
    if (user_db1.Check_same_userid(ls_username)) {
     sout.println("same_username");
     sout.flush();
     close();
     return;
    }else
    {
     sout.println("ok_to_regedit");
     sout.flush();
     close();
     return;    }
   }
   else{
    sout.println("db_connect_fail");
    sout.flush();
    log.println("check same userid fail because db connect fail.");
    close();
    return;
   }
  }catch (Exception e){
   close();
   return;
  }
  
 }

 public void insertmsg(int ai_1){
  String ls_userid;
  String ls_chataction;
  String ls_touserid;
  String ls_chatmsg;
  boolean b1;
  boolean b2;
  ls_userid=(String)sline.elementAt(0);
  if (ai_1==1){
   ls_chataction="公";
  }else{
   ls_chataction="私";
  }
    
  ls_touserid=(String)sline.elementAt(2);
  ls_chatmsg=(String)sline.elementAt(4);
  for (int i = 5; i < sline.size()-1; i++){
   ls_chatmsg=ls_chatmsg+"\n"+(String)sline.elementAt(i);
  }
  chatmsg_db msg_db1=new chatmsg_db();
  b1=msg_db1.con_db();
  if(b1){
   b2=msg_db1.insert_msg(ls_userid, ls_touserid, ls_chatmsg, ls_chataction);
   System.out.println(b2);
   if (b2==false){
    log.println("insert chatmsg fail");
   }
  }  
  else{
   log.println("insert chatmsg fail because db connect fail.");
  }
 }
 public void reguser(){
  String ls_username;
  String ls_password;
  String ls_name;
  String ls_nickname;
  String ls_sex;
  String ls_web;
  String ls_email;
  String ls_person_des;
  boolean b1;
  try{
   ls_username=sin.readLine();
   ls_password=sin.readLine();
   ls_name=sin.readLine();
   ls_nickname=sin.readLine();
   ls_sex=sin.readLine();;
   ls_web=sin.readLine();;
   ls_email=sin.readLine();;
   ls_person_des=sin.readLine();;
  
   user_db user_db1=new user_db();
   b1=user_db1.con_db();
   if(b1){
    if (user_db1.Check_same_userid(ls_username)) {
     sout.println("same_username");
     sout.flush();
     close();
     return;
    }
    else{
     if (user_db1.insert_user(ls_username,ls_password ,ls_name,
       ls_nickname,ls_sex,ls_web,ls_email,ls_person_des)){
      sout.println("reg_succeed");
      sout.flush();
      close();
      return;
     }
     else{
      sout.println("reg_fail");
      sout.flush();
      close();
      return;
     }
    }
   }  
   else{
    sout.println("db_connect_fail");
    sout.flush();
    log.println("reg fail because db connect fail.");
    close();
    return;
   }
  } catch (IOException e) {
   //e.printStackTrace();
   close();
   return;
  }
 }

}

class AuthException extends Exception {
 String mess;

 public AuthException(String mess) {
  this.mess = mess;
 }

 public String toString() {
  return mess;
 }

 public String getMessage() {
  return mess;
 }
}




用户数据库连接类user_db.java: 
package chatroom;

import java.sql.*;

public class user_db {
 private Connection con = null;
 public linkdb myDbTest;
 public boolean con_db(){
  /**
   * 连接到数据库
   */
  myDbTest = new linkdb();
  con=myDbTest.getConnection();
  if(con!=null){
   return true;
   
  }
  else {
   System.out.println("Error: No active Connection");
   return false;
  }
   
 }
 public boolean con_db(String as_ServerName,String as_portnumber,String as_databaseName,String as_userName,String as_password){
  /**
   * 连接到数据库
   */
  myDbTest = new linkdb(as_ServerName,as_portnumber,as_databaseName,as_userName,as_password);
  con=myDbTest.getConnection();
  if(con!=null){
   return true;
  }
  else {
   System.out.println("Error: No active Connection");
   return false;
  }
   
 } 
 public void close_db(){
  /**
   * 关闭数据库连接
   */
  try {
   if(con!=null){
    con.close();
   }
  }catch (Exception s) {
   s.printStackTrace();
  }
   
 } 
 public void displaylinkdetail(){
  myDbTest.displayDbProperties();
 }
 public boolean insert_user(String as_userid,//用户ID
       String as_userpass,//用户密码
       String as_name,//用户姓名
       String as_nick,//用户呢称
       String as_sex,//性别
       String as_web,//个人主页
       String as_email,//电子邮箱
       String as_description){//用户简介
  /**
   * 新增一条用户信息.
   *
   */
  boolean suc=false;
  try{
   con.setAutoCommit(false);
   String ls_1 = "insert into lt_user(userid, userpass,name,nick,sex,web,email,description) " +
     "values('"+as_userid+"','"+as_userpass+"','"+as_name+"','"+as_nick+"','"+as_sex+"','"+as_web+"','"+as_email+"','"+as_description+"')";
   Statement s = con.createStatement();
   s.executeUpdate(ls_1);
   con.commit();
   System.out.println("insert succ");
   suc=true;
   con.setAutoCommit(true);
  } catch (Exception s) {
   try{
    con.rollback();
    con.setAutoCommit(true);
   }catch (Exception s2) {
    s2.printStackTrace();
   }
   s.printStackTrace();
   suc=false;
  }

  return suc;
 }
 public int update_user(String as_userid,
   String as_userpass,
   String as_name,
   String as_nick,
   String as_sex,
   String as_web,
   String as_email,
   String as_description){
  /**
   * 更新用户信息,主要是用于用户自行更新.
   */
  int suc=0;
  int updatereply;
  String ls_1;
  try{
   con.setAutoCommit(true);
   if (as_userpass==""){
    ls_1 = "update lt_user set name='"+as_name+"',nick='"+as_nick+"',sex='"+as_sex+"',web='"+as_web+"',email='"+as_email+"',description='"+as_description+"' where userid = '"+as_userid+"' and (name<>'"+as_name+"' or nick<>'"+as_nick+"' or sex<>'"+as_sex+"' or web<>'"+as_web+"' or email<>'"+as_email+"'or description<>'"+as_description+"')";
   }else{
    ls_1 = "update lt_user set userpass='"+as_userpass+"',name='"+as_name+"',nick='"+as_nick+"',sex='"+as_sex+"',web='"+as_web+"',email='"+as_email+"',description='"+as_description+"' where userid = '"+as_userid+"' and (userpass<>'"+as_userpass+"' or name<>'"+as_name+"' or nick<>'"+as_nick+"' or sex<>'"+as_sex+"' or web<>'"+as_web+"' or email<>'"+as_email+"'or description<>'"+as_description+"')";
   }
   Statement s = con.createStatement();
   updatereply=s.executeUpdate(ls_1);
 //  con.commit();
   if (updatereply==0){
    System.out.println("No row is updated.");
    suc=0;
   }
   else if(updatereply>=1){
    System.out.println("Row is updated.");
    suc=updatereply;
   }else{
    System.out.println("fail updated.");
    suc=-1;
   }
  // con.setAutoCommit(true);
  } catch (Exception s) {
//   try{
//    con.rollback();
//    con.setAutoCommit(true);
//   }catch (Exception s2) {
//    s2.printStackTrace();
//   }
 //  s.printStackTrace();
   suc=-1;
  }

  return suc;
 }
 public String get_user_nickname(String as_userid){
  ResultSet res=null;
  String ls_1="";
  String ls_nickname=null;
  int count=0;

⌨️ 快捷键说明

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