1.客户端通过键盘录入用户名
2.服务端对用户名进行校验:如果该用户存在,服务端显示“XXX,已登录”,并在客户端显示“XXX,欢迎登录”
如果该用户不存在,服务端显示“XXX,尝试登录”,并在客户端显示“XXX,该用户不存在”
3.每个用户最多登录三次

代码如下:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class LoginClient {public static void main(String[] args) throws IOException {//1.创建socket对象,指明服务器端的ip和端口号Socket s = new Socket("127.0.0.1", 10085);//客户端:本机地址,对应端口//键盘键入 处理流用于键盘的键入BufferedReader bufr  = new BufferedReader(new InputStreamReader(System.in));//输出 打印输出流PrintWriter out = new PrintWriter(s.getOutputStream(), true);//输入BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));//三次输入的机会for (int i = 0; i <3 ; i++) {String line= bufr.readLine();//一次读一行if (line==null)break;out.println(line);String info = in.readLine();if (info.contains("exit")) break;//键入exit退出System.out.println("info:"+info);}bufr.close();s.close();}
}
//共同实现这个线程
class ServerThread implements Runnable{private Socket s;public ServerThread(Socket s){this.s=s;}@Overridepublic void run() {String ip = s.getInetAddress().getHostAddress();try {for (int i = 0; i < 3; i++) {BufferedReader bufr = new BufferedReader(new FileReader("d:\\IO\\haha.txt"));BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));//打印流的 getOutputStream输流用于输出数据socket中的数据PrintWriter out = new PrintWriter(s.getOutputStream(), true);String line=null;String name=in.readLine();//是键入的数据boolean flag=false;while ((line= bufr.readLine())!=null){if (name.equals(line)){flag=true;break;//三次机会输入与已知文件内容保持一致则成功}}if (flag){System.out.println(name+"已登录");out.println(name+"欢迎登录");break;}else {System.out.println(name+"尝试登录");out.println(name+"该用户不存在");}bufr.close();}s.close();}catch (Exception e){throw new RuntimeException(ip+"效验失败");}}}
class LoginServer{public static void main(String[] args) throws IOException {ServerSocket ss = new ServerSocket(10085);//实例化一个服务器端的socketwhile (true){Socket s = ss.accept();//用于接收服务端的内容ServerThread a = new ServerThread(s);//实例化实现接口的线程Thread t = new Thread(a);t.start();//开启线程}}
}

在目标盘下的文件:

运行结果:

客户端:

TCP/ip实现客户端并发登录相关推荐

  1. qt之TCP/IP通信客户端与服务器自动连接互相传输数据

    一.前言 在开发上位机软件,用的最多的通信就是网络通信,串口通信和USB通信,串口通信相对是最容易的,USB通信在前面的文章中也专门写了一个博客介绍USB HID通信方式,见链接:https://bl ...

  2. 【网络编程】TCP/IP (客户端--服务端)

    数据链路层: 通过各种控制协议,将有差错的物理信道变为无差错的.能 可靠传输数据帧的数据链路. MAC(物理地址)48位 网络层: 实现数据包的选路和转发. IP 地址有分 IPV4 (32位)和 I ...

  3. 前端基础-TCP/IP 不完全详解

    TCP/IP 不完全详解 TCP/IP是通信协议的统称.首先,我们先认识一下OSI参考模型 OSI 参考模型 OSI 参考模型中各个分层的作用如下: 概括的说: 应用层:为应用程序提供服务并规定应用程 ...

  4. C1000k 新思路:用户态 TCP/IP 协议栈

    转自:http://blog.csdn.net/solstice/article/details/26363901 C1000k 新思路:用户态 TCP/IP 协议栈 现在的服务器支撑上百万个并发 T ...

  5. OSI TCP/IP

    TCP/IP 是供已连接因特网的计算机进行通信的通信协议. TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol ...

  6. 客户端修改文件服务器密码,客户端服务器登录 密码问题

    客户端服务器登录 密码问题 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的Telnet客户端连接Memcached实例的方法.已成功申请Memcached实例,且状态为"运行中 ...

  7. socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少

    常识一:文件句柄限制 在linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是"Socket/File ...

  8. 登录授权、TCP/IP、HTTPS

    今天继续纯理论的东东,比较枯燥,但是又很重要,坚持.. 登录和授权 登录和授权的区别: 登录:身份认证,即确认「你是你」的过程. 授权:由身份或持有的令牌确认享有某些权限(例如获取用户信息).登录过程 ...

  9. java 单个用户的多重并发会话_单个用户的多重并发会话限制/限制单客户端同时登录多个用户...

    我使用的是SSH2框架,做安全测试需要限制:1.单个用户的多重并发会话限制 2. 限制单客户端同时登录多个用户 .这两个内容,没有采用在web.xml中配置过滤器的方式,我处理的方式是如果一个用户在第 ...

最新文章

  1. getchar getche getch的区别
  2. Android Studio开发RecyclerView遇到的各种问题以及解决
  3. 【Beta阶段】第二次Scrum Meeting!
  4. python爬虫scrapy安装_Python爬虫:Scrapy框架的安装和基本使用
  5. 太酷了!龙族幻想时装制作的秘密都在这里了!
  6. 设置表格边框为1px的方法
  7. 漫谈MySQL权限安全,威力加强版
  8. behavior php,YII2框架中behavior行为的理解与使用方法示例
  9. DOM事件流三个阶段
  10. Json格式以及常见的Json解析器
  11. Raspberry Pi (树莓派)折腾记之一
  12. 整理下Jquery中用到的英语单词 带音标
  13. 2021牛客寒假算法基础集训营1 C 无根树问题的处理策略 前序后序遍历 奇偶匹配 DFS
  14. 清除input的历史记录
  15. Oracle EBS APP-FND-02901: you don‘t have privilege to any operating unit
  16. Excel数值、文本相互转换
  17. 设计模式(七)——适配器模式
  18. 新手入门电脑和S7 200Smart PLC 的自由口通信
  19. android pdf转jpg格式,在Android中将图片转换为PDF
  20. 番茄花园幕后公司揭秘

热门文章

  1. html 更改视频封面,HTML5视频标签 - 如何设置封面背景大小
  2. 数据库基础理论三——多值依赖Armstrong公理及特性推导
  3. 安卓登录注册界面开发(附源码)
  4. 数据挖掘算法比赛 - 简单经验总结
  5. C#连接数据库的登录界面
  6. 织梦自定义字段html,织梦模板调用自定义字段方法
  7. 放下流量思维,回归用户思维
  8. 多任务学习中的网络架构和梯度归一化
  9. MySQL字符集与比较规则
  10. android[butterKnife(黄油刀)史诗详细使用方法]