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

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

如果用户名存在,服务端显示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


目录
相关文章
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
2651 5
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
[Git] 深入理解 Git 的客户端与服务器角色
|
网络协议 开发者 Python
Socket如何实现客户端和服务器间的通信
通过上述示例,展示了如何使用Python的Socket模块实现基本的客户端和服务器间的通信。Socket提供了一种简单且强大的方式来建立和管理网络连接,适用于各种网络编程应用。理解和掌握Socket编程,可以帮助开发者构建高效、稳定的网络应用程序。
645 10
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
2886 16
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
417 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
弹性计算 Linux 网络安全
阿里云服务器怎么登陆,常见登陆方式教程参考
在连接实例时,首先需要完成身份验证,确保只有授权用户能够访问和管理服务器资源,以增强安全性。创建实例时,您可以选择一个系统预设的用户作为初始登陆用户。实例创建完成后,即可用该用户身份登陆。本文将详细介绍不同用户的特点与区别,以及如何管理这些用户和添加额外的远程连接用户。
5751 12
|
安全 区块链 数据库
|
6月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
518 10
|
6月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
6月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
648 8

热门文章

最新文章

下一篇
开通oss服务