JAVA远程验证账号密码的方法

JAVA远程验证账号密码的方法,第1张

这个么 呵呵。socket通信不要直接使用输入输出流,在输入输出流的外面包装一层对象流,不论到什么时候都要记得,java是面向对象的语言,所谓一切皆对象,出处都要使用面向对象的思维考虑问题。
服务器端
建立一个User的pojo类(简单对象模型,只有属性和get,set方法),里面封装User对象的数据库中的主键(这个可选,如果要映射数据库的话最好加上)用户名,密码,权限标志。代码如下:
一定要注意 一定要注意 一定要注意 一定要注意 一定要注意
此处一定要注意,对象必须实现序列化,即实现Serializable接口,然后使用生成serialVersionUID(必须的,socket同学传递对象必须实现序列化的对象才能反序列化)。
package comcommentmodel;
/
Users entity @author MyEclipse Persistence Tools
/
public class User implements javaioSerializable {
private static final long serialVersionUID = 8820751056579395747L;
private Integer userId;
private String username;
private String password;
private String flag;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
thisuserId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
thisusername = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
thispassword = password;
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
thisflag = flag;
}
}
然后客户端可以这样
将用户信息封装到user对象
User user = new User();
usersetUsername(username);
usersetPassword(password);
usersetFlag(flag);
将封装好的对象传入服务器端
Socket toServer = new Socket(ip, port);
ObjectOutputStream streamToServer = new ObjectOutputStream(toServergetOutputStream());
streamToServerwriteObject( user);
服务器端
首先要讲客户端的User类复制过来(当然在一个项目里没这必要,我通常写在两个项目里)。
其次:
ServerSocket ssk = ServerSocket(port);
Socket sk = sskaccept();
ObjectInputStream fromClient = new ObjectInputStream(skgetInputStream());
Object obj = (Object) fromClientreadObject();
//这里User类要写全路径 比如 comUser
if(objgetClass()getName()equals("User"){
User user=(User)obj;
//可以直接执行登陆逻辑了。login(user);
//也可以 String userName = usergetUsername();
// String passWord = usergetPassword();

}
其实socket通信还有好多问题要考虑,比如阻塞问题啦,安全问题啦等等,楼主先搞懂socket通信的基本原理和方法再往深了想吧


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10888751.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-12
下一篇2023-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存