您的位置:首页 > 理论基础 > 计算机网络

网络编程中(socket)用户登录验证以及注册(单用户)

2017-08-01 19:20 639 查看
网络编程中(socket)用户登录验证以及注册(单用户)

代码演示如下:

package com.tiger.login;
import java.io.*;
import java.net.*;
import java.util.Properties;
/**
* 网络编程中(socket)用户登录验证以及注册
* @author tiger
* @Date 2017年7月31日
*/
public class ServerLogin {

@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
System.out.println("服务器启动。。。。");
String path = "E:\\tiger\\user.txt";
ServerSocket server = null;
DataInputStream is = null;
DataOutputStream os = null;
server = new ServerSocket(6666);
Socket socket = server.accept();
is = new DataInputStream(socket.getInputStream());
os = new DataOutputStream(socket.getOutputStream());

login(is,os,path,socket);//登录

os.close();
is.close();
}
/**
* 登录
* @param is
* @param os
* @param path 类似数据库,服务端才直接面对数据库
*/
public static void login(DataInputStream is,DataOutputStream os,String path,Socket socket){
try {
//读取客户端输入的信息
String[] str = is.readUTF().split("=");
String name = str[0];
String pwd = str[1];
//读取文本数据信息
FileInputStream fis = new FileInputStream(path);
Properties pros = new Properties();
pros.load( fis );
String user = pros.getProperty( "user" );
String pass = pros.getProperty( "pass" );
//验证客户端输入的信息和文本数据信息是否一致。
if (name.equals(user) && pwd.equals(pass)) {
os.writeUTF("登录成功!");
}else {
//向客户端发送消息,询问是否需要注册。
os.writeUTF("账户或密码错误或不存在,登录失败!如果需要注册,请输入  \"1\" ");
register(is,os, path);//注册
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 注册,如果登录不成功,则选择调用这个方法
*/
private static void register(DataInputStream is,DataOutputStream os,String path){
BufferedWriter writer;
try {
writer = new BufferedWriter(new FileWriter(path));
//读取客户端输入的信息,输出到 user.txt 数据库中
String[] str = is.readUTF().split("=");
String name = str[0];
String pwd = str[1];
writer.write("user="+name);
writer.newLine();
writer.write("pass="+pwd);
writer.close();//关闭缓冲流,才会写出数据
//像客户端反馈注册结果消息
os.writeUTF("恭喜注册成功!如果需要重新登录,请输入 \"2\"");

} catch (IOException e) {
e.printStackTrace();
}
}
}package com.tiger.login;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;
/**
* 网络编程中(socket)用户登录验证以及注册
* @author tiger
* @Date 2017年7月31日
*/
public class ClientLogin {

public final static int PORT = 6666;//服务器端口号
public final static String IP_ADDR = "127.0.0.1";//服务器地址

@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
DataInputStream is = null;
DataOutputStream os = null;
Socket socket = new Socket(IP_ADDR,PORT);
//读取服务器端输入数据
is = new DataInputStream(socket.getInputStream());
//向服务器端发送数据
os = new DataOutputStream(socket.getOutputStream());

login(is, os,socket);
os.close();
is.close();
}
/**
* 注册
* @param is
* @param os
*/
private static void register(DataInputStream is,DataOutputStream os){
Scanner sc = new Scanner(System.in);
try {
//将读取到的信息发送到服务器
System.out.println("注册格式--【登录名=登录密码】");
os.writeUTF(sc.nextLine());
//接受来自服务器反馈的注册结果消息
System.out.println(is.readUTF());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 登录
* @param is
* @param os
*/
public static void login(DataInputStream is,DataOutputStream os,Socket socket){
Scanner sc = new Scanner(System.in);
try {
//发送到服务器做验证
System.out.println("登录格式【登录名=登录密码】");
os.writeUTF(sc.nextLine());
//接收打印来自服务器端登录结果的反馈消息
String ret = is.readUTF();
System.out.println(ret);
if (ret.equals("登录成功!")) {
socket.close();
}else if (sc.nextLine().equals("1")) {
register(is, os);
}else {
System.out.println("欢迎下次光临!");
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: