客户端登陆服务器用户名验证

简介:
/*
客户端通过键盘录入用户名。
服务端对用户名进行验证。

如果用户名存在,服务端显示xxx已登录,客户端显示xxx,欢迎登陆。
如果用户名不存在,服务端显示xxx尝试登陆,客户端显示xxx,用户名不存在。

最多登陆三次,防止暴力登陆。
*/
import java.io.*;
import java.net.*;
/*
*客户端
*/
class  client
{
	public static void main(String[] args) throws Exception
	{
		Socket s = new Socket("192.168.33.1",10008);//建立服务
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//读取键盘输入用户名
		PrintWriter pw = new PrintWriter(s.getOutputStream(),true);//读到数据往服务端写
		BufferedReader bufin = 
			new BufferedReader(new InputStreamReader(s.getInputStream()));//将客户端返回的数据读入
		for(int x = 0;x < 3; x ++)//只登陆3次设定
		{
			String line = bufr.readLine();//读取用户名
			pw.println(line);
			if(line == null)//为空用户名终止
				break;
			pw.println(line);
			String info = bufin.readLine();//读取服务端返回的数据
			System.out.println("Server info:"+info);
			if(info.contains("欢迎登陆"))//用户登录终止
				break;
		}
		bufr.close();
		s.close();
	}
}
/*
*服务端
*/
class ServerThread implements Runnable
{
	private Socket s;
	ServerThread(Socket s)
	{
		this.s = s;
	}
	public void run()
	{
		String ip = s.getInetAddress().getHostAddress();
		System.out.println(ip+"...........connect");
		try
		{
			for(int x = 0;x < 3;x ++)
			{
				BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));//读取客户端发送的数据
				String name = bufin.readLine();
				if(name == null)
					break;
				BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));//读取已存入用户账户,本来是读取数据库,这里方便就写了一个文本
				PrintWriter out = new PrintWriter(s.getOutputStream(),true);//写入流,服务端写出
				String line = null;
				boolean flag = false;//判断标记
				while((line = bufr.readLine())!= null)//读取数据库(Use.txt)中数据
				{
					if(line.equals(name))//如果数据库和读取用户名相同,则终止
					{
						flag = true;
						break;
					}
				}
				if(flag)
					{
						System.out.println(name+":已登录");
						out.println(name+":欢迎登陆");
						break;
					}
				else
				{
					System.out.println(name+":尝试登陆");
					out.println(name+":用户名不存在");
				}
			}
			s.close();
		}
		catch (Exception e)
		{
			throw new RuntimeException("验证失败");
		}
	}
}
class  server
{
	public static void main(String[] args) throws Exception
	{
		ServerSocket ss = new ServerSocket(10008);//建立服务
		while (true)
		{
			Socket s = ss.accept();//接收客户端传来数据
			new Thread(new ServerThread(s)).start();//开启线程
		}
	}
}

打印结果:

user.txt


目录
相关文章
|
2月前
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
66 18
[Git] 深入理解 Git 的客户端与服务器角色
|
3月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
372 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
4月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
73 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
3月前
|
弹性计算 Linux 网络安全
阿里云服务器怎么登陆,常见登陆方式教程参考
在连接实例时,首先需要完成身份验证,确保只有授权用户能够访问和管理服务器资源,以增强安全性。创建实例时,您可以选择一个系统预设的用户作为初始登陆用户。实例创建完成后,即可用该用户身份登陆。本文将详细介绍不同用户的特点与区别,以及如何管理这些用户和添加额外的远程连接用户。
661 12
|
5月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
229 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
5月前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
131 4
|
5月前
|
安全 区块链 数据库
|
19天前
|
存储 机器学习/深度学习 人工智能
2025年阿里云GPU服务器租用价格、选型策略与应用场景详解
随着AI与高性能计算需求的增长,阿里云提供了多种GPU实例,如NVIDIA V100、A10、T4等,适配不同场景。2025年重点实例中,V100实例GN6v单月3830元起,适合大规模训练;A10实例GN7i单月3213.99元起,适用于混合负载。计费模式有按量付费和包年包月,后者成本更低。针对AI训练、图形渲染及轻量级推理等场景,推荐不同配置以优化成本和性能。阿里云还提供抢占式实例、ESSD云盘等资源优化策略,支持eRDMA网络加速和倚天ARM架构,助力企业在2025年实现智能计算的效率与成本最优平衡。 (该简介为原文内容的高度概括,符合要求的字符限制。)
|
21天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
11天前
|
人工智能 负载均衡 数据可视化
阿里云出手了,DeepSeek服务器拒绝繁忙,免费部署DeepSeek模型671B满血版
阿里云推出免费部署DeepSeek模型671B满血版服务,通过百炼大模型平台,用户无需编码,最快5分钟、最低0元即可完成部署。平台提供100万免费Token,支持DeepSeek-R1和DeepSeek-V3等多款模型调用,有效解决服务器繁忙问题。新手零基础也能轻松上手,享受高效稳定的API调用和自动弹性扩展功能。教程涵盖开通服务、获取API-KEY及配置Chatbox客户端等步骤,详细指引助您快速实现DeepSeek自由。
128 18