zoukankan      html  css  js  c++  java
  • 多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();
    			}
    	}
    
    }
    

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


  • 相关阅读:
    LintCode2016年8月22日算法比赛----骰子求和
    LintCode2016年8月22日算法比赛----平面列表
    LintCode2016年8月22日算法比赛----将数组重新排序以构造最小值
    LintCode2016年8月22日算法比赛----克隆二叉树
    Leetcode算法比赛----Longest Absolute File Path
    Leetcode算法比赛----First Unique Character in a String
    vue运行报错Error: listen EADDRNOTAVAIL 192.168.1.105:8080
    vue使用lrz插件压缩图片
    <input type="file">原型难看
    vue创建全局变量以及全局方法
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6930490.html
Copyright © 2011-2022 走看看