Java

Java TCP客户端并发登录

2019-10-06  本文已影响0人  一亩三分甜

客户端通过键盘录入用户名。服务端对这个用户名进行校验。如果该用户存在,在服务端显示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 {
}
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 {
}
24.gif
上一篇 下一篇

猜你喜欢

热点阅读