为了账号安全,请及时绑定邮箱和手机立即绑定

socket编程模拟客户端登录

标签:
Android

1.客户端

package demo01;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.Socket;

import java.util.Scanner;

public class Client {

public static void main(String[] args) {

try {

// 创建Socket对象

Socket socket = new Socket("127.0.0.1", 8384);

// 打开和服务器的链接  打开输出流

OutputStream os = socket.getOutputStream();

// 发送信息

// String msg = "hi, nice to meet you!";

 

Scanner sc=new Scanner(System.in);//模拟用户登录

  

   System.out.println("请输入姓名:");

   String name=sc.next();

   System.out.println("请输入密码");

String pwd=sc.next();

os.write(name.getBytes());

os.write("\r\n".getBytes());

os.write(pwd.getBytes());

// 告诉服务器,客户端发送完毕

socket.shutdownOutput();

// 读取服务器响应的内容

String s;

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

System.out.println(s=br.readLine().toString());

 

  // str=br.readLine();

  if(s.equals("no")){//判断用户信息的正确性

  System.out.println("登录失败!");

  }else{

  System.out.println("登录成功!");

  }

  // 关闭

br.close();

os.close();

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

2.服务器端

package demo01;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.ObjectInputStream;

import java.io.ObjectOutput;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.io.ObjectInput;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

public class Server {

public static void main(String[] args) throws IOException, ClassNotFoundException {

  File file=new File("C:info.txt");//用户信息提前存入硬盘

       ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file));//创建对象流实现添加用户默认信息

       List<User>list=new ArrayList<User>();//以集合为单位存取信息

           User u1=new User("zm","123456");

           User u2=new User("lx","12345");

           list.add(u1);

           list.add(u2);

           oos.writeObject(list);//提前预存用户信息  方便以后用户登录核实

           ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));

           List<User>list2=new ArrayList<User>();

             list2=(List<User>)ois.readObject();//从文件中读取信息存入list2集合

             for(User u:list2){

             System.out.println(u);

             }

           

try {//socket 编程

ServerSocket ss = new ServerSocket(8384);

Socket socket = ss.accept();

InputStream is = socket.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is));

String s;

String str[]=new String[2];//用户名和信息存入字符串数组以便和文件中数据比较判断用户信息的正确性

int t=0;

while((s = br.readLine()) != null) {

str[t++]=s;

System.out.println(s);

}

// 响应客户端

  String flag="no";

for(User u:list2){//判断用户信息的正确性

//System.out.println(u.getName()+"||"+u.getPwd());

if(u.getName().equals(str[0].trim())&&u.getPwd().equals(str[1].trim())){

flag="yes";

}

}

OutputStream os = socket.getOutputStream();

os.write(flag.getBytes());//与客户端交互

os.close();

br.close();

is.close();

ss.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

3.实例对象 (序列化与反序列化实现对象存取)

package demo01;

import java.io.Serializable;

public class User implements Serializable{

/**

*/

private static final long serialVersionUID = 1L;

/**

*/

    private String name;//用户名

    private String  pwd;//密码

public User(String name, String pwd) {

super();

this.name = name;

this.pwd = pwd;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

@Override

public String toString() {

return "User [name=" + name + ", pwd=" + pwd + "]";

}

    

}

原文链接:http://www.apkbus.com/blog-813041-60927.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消