📄 javachatcode.txt
字号:
}
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 + -