📄 serverthread.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 + -