📄 servercustomer.java
字号:
package Java.ICQ;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Vector;
public class ServerCustomer extends Thread
{
private Socket socket;//定义套接口
private BufferedReader in;//定义输入流
private PrintWriter out;//定义输出流
ConnectSQL con;
public ServerCustomer(Socket socket) //线程构造函数
{
this.socket=socket;//取得传递参数
con= new ConnectSQL();
try
{
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//创建输入流
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//创建输出流
System.out.println("创建双向通讯管道成功");
}
catch(IOException ie)
{
System.out.println("创建双向通讯管道失败");
}
start();//启动线程
}
public void run()
{//线程监听函数
while(true)
{
try
{
transact();
}
catch(IOException e)
{
IOexception(e);
out.println("usernamepassword");
break;
}
}
}
public void transact() throws IOException
{
String str=in.readLine();//取得输入字符串
System.out.println(str);
//如果是结束就关闭连接
if(str.equals("end"))
{
this.stop();
}
//如果是登录
if(str.equals("login"))
{
login();
}
if(str.equals("new"))
{
getUserMess();
}
if(str.equals("find"))
{
find();
}
if(str.equals("friend"))
{
friend();
}
if(str.equals("addfriend"))
{
addfriend();
}
if(str.equals("addnewfriend"))
{
addnewfriend();
}
if(str.equals("delfriend"))
{
delfriend();
}
if(str.equals("logout"))
{
logout();
}
if(str.equals("getwhoaddme"))
{
getwhoaddme();
}
}
//登录函数
public void login() throws IOException
{
int user=getUsername();
String password= getPassword();
System.out.println(user);
System.out.println(password);
//连接数据库并查询
con.connectDBSQL();
String strpassword= con.LoginSQL(user,password);
if(strpassword==null)
out.println("usernameError");
else
{
System.out.println(password.regionMatches(0,strpassword,0,strpassword.length()));
//判断密码是否相等
if(password.regionMatches(0,strpassword,0,strpassword.length()))
{
//如果相同就告诉客户ok
//并且更新数据库用户为在线
//以及注册用户的ip 地址
String hostAddress = socket.getInetAddress().getHostAddress();
System.out.println(hostAddress);
con.connectDBSQL();
con.updateSQL(hostAddress,user);
out.println("succeed");
}
else
{
out.println("passwordError");
}
}
}
//注册用户函数
public void getUserMess() throws IOException
{
String nickname=in.readLine().trim();
String password=in.readLine().trim();
String email=in.readLine().trim();
String sex=in.readLine().trim();
String info=in.readLine().trim();
String place=in.readLine().trim();
int picindex=Integer.parseInt(in.readLine());
con.connectDBSQL();
System.out.println(nickname);
System.out.println(password);
System.out.println(email);
System.out.println(sex);
System.out.println(info);
System.out.println(place);
System.out.println(picindex);
String falg = con.insertSQL(nickname,password,email,sex,info,place,picindex);
System.out.println(falg);
out.println(falg);
}
//查找好友
public void find() throws IOException
{
con.connectDBSQL();
Vector rs= con.findFriend();
if(rs.size()>0)
{
ObjectOutputStream objStream = new ObjectOutputStream(socket.getOutputStream());
objStream.writeObject((Vector)rs);
}
}
//上线时读取好友的资料
public void friend() throws IOException
{
int friend=getFriend();
con.connectDBSQL();
Vector rs=con.readFriend(friend);
System.out.println(rs.size());
if(rs.size()>0)
{
System.out.println("找到好友");
out.println("FindFriend");
ObjectOutputStream objStream = new ObjectOutputStream(socket.getOutputStream());
objStream.writeObject((Vector)rs);
}
else
{
System.out.println("没有好友");
out.println("notFindFriend");
}
}
//以下处理用户添加好友
public void addfriend() throws IOException
{
int friendicqno=getUsername();
int myicqno= getUsername();
con.connectDBSQL();
String rs= con.addfriend(myicqno,friendicqno);
out.println(rs);
}
//以下处理其他用户如果加我,我就加他
public void addnewfriend() throws IOException
{
int friendicqno= getUsername();//好友号码
int myicqno=getUsername();//自己号码
con.connectDBSQL();
System.out.println(friendicqno);
Vector rsadd = con.addnewfriend(myicqno,friendicqno);//读取好友的资料
con.connectDBSQL();
String rsString=con.addfriend(myicqno,friendicqno);
System.out.println(rsadd.size());
if(rsadd.size()>0&&rsString.equals("addSucceed"))
{
out.println("addSucceed");
ObjectOutputStream objStream = new ObjectOutputStream(socket.getOutputStream());
objStream.writeObject((Vector)rsadd);//把读取好友的资料发给客户
}
else if(rsadd.size()>0)
{
out.println("addLost");
}
else
{
out.println("addError");
}
}
//以下执行用户删除好友
public void delfriend() throws IOException
{
int friendicqno=getUsername();
int myicqno=getUsername();
con.connectDBSQL();
String rsdel = con.delfriend(myicqno,friendicqno);
System.out.println(rsdel);
out.println(rsdel);
}
//以下处理用户退出程序
public void logout() throws IOException
{
int myicqno=getUsername();
System.out.println(myicqno);
con.connectDBSQL();
String rsdate = con.logout(myicqno);
System.out.println(rsdate);
out.println(rsdate);
}
//以下处理那些人加了我为好友,以便上线通知他们
public void getwhoaddme() throws IOException
{
int myicqno=getUsername();
con.connectDBSQL();
con.getwhoaddme(myicqno);
}
//从客户端获取用户名
public int getUsername() throws IOException
{
String icqno=in.readLine();
int user=Integer.parseInt(icqno);//取得输入的jicq号码
System.out.println(icqno);
return user;
}
//从客户端获取密码
public String getPassword() throws IOException
{
String passwd=in.readLine().trim();//取得输入的密码
System.out.println(passwd);
return passwd;
}
public int getFriend() throws IOException
{
int icqno=Integer.parseInt(in.readLine());
System.out.println(icqno);
return icqno;
}
//处理IO异常函数
public void IOexception(IOException e)
{
System.out.println("读取数据出错"+e.getMessage());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -