项目实现要求
- 编写客户端和服务器代码,要求客户端和服务器进行对象的传输交流。
- 要求服务器支持同时多个客户端访问。
- 并且客户端能够使用多个账号进行登录。
- 客户端和服务器接收到对方的请求时,都给予对方响应内容。
- 密码输入错误后支持用户重新输入。
项目思考
- 首先要想去验证用户登录,就需要去构建一个用户类,这个用户类有账号和密码两个属性,为了方便验证登录效果(即比对账号和密码)还需要去重写
equals
方法。同时为了使得这个对象能够被序列化和反序列化,还需要去实现Serializable
接口。 - 服务器想要支持多个客户端访问,就需要使用到多线程技术。
- 想要获取用户输入的账号和密码,还需要使用到
Scanner
类中的next()
方法。 - 客户端想要实现多个账号进行登录,就需要提前将账号和密码信息填入到本地文件。
项目实现
本地账号文件user.txt
。
1 | zhangsan-123456 |
用户类User:
1 | package com.tipdm.demo7; |
用户功能类UserService
:
1 | package com.tipdm.demo7; |
客户端类TestClient
:
1 | package com.tipdm.demo7; |
服务器线程类ServerThread
:
1 | package com.tipdm.demo7; |
服务器类TestServer
:
1 | package com.tipdm.demo7; |
测试效果
- 启动服务器
- 启动客户端
- 接下来输入一个错误的账号和密码
- 登录失败,并且让用户重新登录,服务器也会打印登录失败信息。
- 解析来输入一个正确的账号和密码
- 客户端登录成功,正常退出程序。服务器端打印登录成功信息。
接下来演示登录其他账号。
- 客户端
- 服务器
多账号登录测试成功,完成需求。