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

📄 serverthread.java

📁 一个采用Java Socket编程实现的QQ软件
💻 JAVA
字号:
package serverwork;
import java.net.*;
import java.io.*;
import database.userservice;
import database.usertable;

public class ServerThread extends Thread{                          //次函数主要用来管理当前登录到系统的相关事务
    private Socket sock = null;
    private DataInputStream datain = null;
    private DataOutputStream dataout = null;
    private Server owner = null; 
    private userservice dataservice;
    // private String[] friends;
    public ServerThread(Socket sock, Server owner) {
        this.sock = sock;
        this.owner = owner;
        dataservice = owner.dataservice;
        try {
            this.datain = new DataInputStream(this.sock.getInputStream());
            this.dataout = new DataOutputStream(this.sock.getOutputStream());
        } catch (IOException ex) {
            ex.printStackTrace();
        }        
    }
    
    public void run(){
        int loginnumber = 0;
        String username = null;
        boolean stop = false;
        while(!stop){
            try {
                String st = datain.readUTF();
                System.out.println("用户传来:"+st);
                String st1 = st.substring(st.indexOf(":")+1);
                System.out.println("ok");
                String[] info = st1.split(",");
                System.out.println("info[0]="+info[0]+"info[1]="+info[1]);
                username = info[0];  
                if(st.startsWith("登陆:")){  //有一个是否关闭流的方法
                    boolean login = dataservice.validatoruser(info[0],info[1]);
                    if(login){
                        System.out.println("登陆成功");
                        String[] friend = dataservice.getallfriends(username);                  
                        stop = true;
                        dataout.writeUTF("登陆:success");
                        if(friend.length > 0){
                            owner.sum.sendFriendsList(sock,friend,username);
                            owner.sum.noticeOtherFriends(sock, username, friend); 
                        }
                        owner.sum.addOnlineUser(sock, username); 
                    }else{
                        dataout.writeUTF("登陆:登陆失败");
                        loginnumber++;
                    }
                }
                if(st.startsWith("注册:")){
                    usertable user = new usertable();
                    user.setusername(username);
                    user.setpasswrod(info[1]);
                    user.setmessage("");
                    user.setfriends("");
                    user.settype(1);
                    boolean tr = dataservice.insertuser(user);
                    if(tr == true){
                        dataout.writeUTF("注册:success");                    
                    }else{
                        dataout.writeUTF("注册:failure");
                        loginnumber++;
                    }
                }    
            } catch (IOException ex) {
                ex.printStackTrace();
            }         
            if(loginnumber >= 3){
                stop = true;        
                System.out.println("超过允许登陆次数");
            }
            if(stop == true){
                try {
                    dataout.writeUTF("end");
                } catch (IOException e) {
                    //e.printStackTrace();
                }
                try {
                    sock.close();
                    System.out.println("已关闭此线程");
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }
    
    public userservice getData(){        
        return dataservice;
    }       
}


⌨️ 快捷键说明

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