码迷,mamicode.com
首页 > 其他好文 > 详细

多客户端并发登录

时间:2014-10-21 17:53:08      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:java   socket   并发登录   io   

//LoginClient.java

package mySocket;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;


/**
 *客户端通过键盘录入用户名
 *服务端对这个用户名进行校验。
 *
 *如果该用户存在,在服务端显示xxx,已登录。
 *并在客户端显示xxx,欢迎光临。
 *
 *如果该用户存在,在服务端显示xxx,尝试登陆。
 *并在客户端显示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()));
							//读取客户端发来的数据
							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+"用户名不存在");
							}
							
							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   socket   并发登录   io   

原文地址:http://blog.csdn.net/huolang_vip/article/details/40346151

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!