• 多client并发登录


    //LoginClient.java

    package mySocket;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    
    /**
     *client通过键盘录入username
     *服务端对这个username进行校验。
     *
     *假设该用户存在,在服务端显示xxx,已登录。
     *并在client显示xxx,欢迎光临。

    * *假设该用户存在,在服务端显示xxx。尝试登陆。 *并在client显示xxx,该用户不存在。 * *最多登陆3次。 */ public class LoginClient { public static void main(String[] args) throws Exception { Socket s = new Socket("192.168.1.103",10008); 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); if(info.contains("欢迎")) break; } bufr.close(); s.close(); } }


    //LoginServer.java


    package mySocket;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    class LoginThread implements Runnable	{
    		private Socket s; 
    		public LoginThread(Socket s) {
    			this.s = s;
    		}
    		public void run() {
    			//获取连接的ip
    			String ip = s.getInetAddress().getHostAddress();
    			System.out.println(ip+"已被连接");
    			
    			try {
    					for(int x=0;x<3;x++)	{
    							BufferedReader bufIn =
    									new BufferedReader(new InputStreamReader(s.getInputStream()));
    							//读取client发来的数据
    							String name = bufIn.readLine();
    							if(name==null)
    								break;
    							//读取user.txt里的数据
    							BufferedReader bufr = 
    									new BufferedReader(new FileReader("user.txt"));
    							
    							String line = null;
    							boolean flag = false;
    							
    							while((line=bufr.readLine())!=null)	{
    									if(line.equals(name))	{
    										flag = true;
    										break;
    									}
    							}
    							
    							PrintStream out = new PrintStream(s.getOutputStream(),true);
    							if(flag)	{
    								System.out.println(name+"已登录");
    								 out.println(name+"欢迎光临");
    								 break;
    							}
    							else{
    								System.out.println(name+"尝试登陆");
    								out.println(name+"username不存在");
    							}
    							
    							s.close();
    					}
    			} catch (Exception e) {
    						throw new RuntimeException(ip+"校验失败");
    			}
    		}
    }
    
    public class LoginServer {
    
    	public static void main(String[] args) throws Exception {
    			ServerSocket ss = new ServerSocket(10008);
    			
    			while(true)	{
    				Socket s = ss.accept();
    				new Thread(new LoginThread(s)).start();
    			}
    	}
    
    }
    

    //学习自毕向东老师培训视频


  • 相关阅读:
    Java学习第一篇废话写在前面
    使用UI Automation实现自动化测试7.2 (模拟键盘复杂操作在自动化测试中的应用)
    生活随想之 积累经验篇
    赌一把
    重启职业及生存旅途计划
    partial class在自动化测试中的使用
    您们用什么广告平台
    Crazy English 900 Expressions (Android App)
    生存之道
    个税计算器完美终极版
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6930490.html
Copyright © 2020-2023  润新知