java tcp 登录_Java TCP客户端并发登录

客户端通过键盘录入用户名。服务端对这个用户名进行校验。如果该用户存在,在服务端显示xxx,已登录。并在客户端显示xxx,欢迎光临。如果该用户不存在,在服务端显示xxx,尝试登陆。并在客户端显示xxx,该用户不存在。最多就登录三次。

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

class LoginClient

{

public static void main(String[] args) throws Exception

{

Socket s = new Socket("192.168.22.42",10009);

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

PrintWriter out = new PrintWriter(s.getOutputStream(),true);

BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

for (int x=0;x<3;x++)

{

String line = bufr.readLine();

if (line==null)

break;

out.println(line);

String info = bufIn.readLine();

System.out.println("info:"+info);

if (info.contains("欢迎"))

break;

}

bufr.close();

s.close();

}

}

class UserThread implements Runnable

{

private Socket s;

UserThread(Socket s)

{

this.s = s;

}

public void run()

{

String ip = s.getInetAddress().getHostAddress();

System.out.println(ip+"......connected");

try

{

for (int x=0;x<3;x++)

{

BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

String name = bufIn.readLine();

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)

{

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(ip+"校验失败");

}

}

}

class LoginServer

{

public static void main(String[] args) throws Exception

{

ServerSocket ss = new ServerSocket(10009);

while (true)

{

Socket s = ss.accept();

new Thread(new UserThread(s)).start();

}

}

}

public class TcpDemo5 {

}

00df5f270681

23.gif

强制结束后,还执行两次登录。增加name是否为空判断,为空则停止三次循环。

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

class LoginClient

{

public static void main(String[] args) throws Exception

{

Socket s = new Socket("192.168.22.42",10009);

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

PrintWriter out = new PrintWriter(s.getOutputStream(),true);

BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

for (int x=0;x<3;x++)

{

String line = bufr.readLine();

if (line==null)

break;

out.println(line);

String info = bufIn.readLine();

System.out.println("info:"+info);

if (info.contains("欢迎"))

break;

}

bufr.close();

s.close();

}

}

class UserThread implements Runnable

{

private Socket s;

UserThread(Socket s)

{

this.s = s;

}

public void run()

{

String ip = s.getInetAddress().getHostAddress();

System.out.println(ip+"......connected");

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)

{

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(ip+"校验失败");

}

}

}

class LoginServer

{

public static void main(String[] args) throws Exception

{

ServerSocket ss = new ServerSocket(10009);

while (true)

{

Socket s = ss.accept();

new Thread(new UserThread(s)).start();

}

}

}

public class TcpDemo5 {

}

00df5f270681

24.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值