Tcp-客户端并发登录

来源:互联网 发布:博彦科技面试php 编辑:程序博客网 时间:2024/05/09 19:48

看毕老师视频练个手
import java.io.*;
import java.net.*;

class LoginClient
{
public static void main(String[] agrs) throws Exception
{
Socket s = new Socket(“192.168.0.101”,10003);
/读取键盘录入,获得输出流/
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 str = bufin.readLine();        System.out.println(str);            if(str.contains("欢迎"))                break;    }    /*输入3次以后将客户端输出流关闭*/    bufr.close();    s.close();}

}

class UserThread implements Runnable
{
/只能从外部导入Socket对象/
private Socket s;
UserThread(Socket s)
{
this.s = s;
}

/*服务端校验3次,3次不成功就停止校验*/public void run(){    for(int x=0; x<3; x++)    {        String ip = s.getInetAddress().getHostAddress();        System.out.println(ip+"...connected");        try        {            BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));            String name = bufr.readLine();            BufferedReader buffile = new BufferedReader(new FileReader("username.txt"));            PrintWriter out = new PrintWriter(s.getOutputStream(),true);            String line = null;            boolean flag = false;//定义一个标记;            while((line=buffile.readLine())!=null)            {                if(line.equals(name))                {                    flag = true;                    break;                }            }            if(flag)            {                System.out.println(name+",login");                out.println(name+",欢迎光临");                break;  //跳出for循环;            }            else            {                System.out.println(name+",尝试登录");                out.println(name+",用户名不存在");            }            s.close();        }        catch(Exception e)        {            throw new RuntimeException("校验失败");        }    }}

}

class Server
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10003);
/多线程,多个客户端并发登录/
while(true)
{
Socket s = ss.accept();
new Thread(new UserThread(s)).start();
}
}
}

0 0