现在的位置: 首页 > 综合 > 正文

黑马程序员——双线程Tcp通信

2013年03月28日 ⁄ 综合 ⁄ 共 2390字 ⁄ 字号 评论关闭

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

/**

    用户登陆,限次数3次
*/

import java.io.*;
import java.net.*;
class UserLogin
{
    public static void main(String[] args) throws Exception
    {
        Socket s=new Socket("192.168.1.102",8888);
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        PrintWriter fwout=new PrintWriter(s.getOutputStream(),true);
        BufferedReader brin=new BufferedReader(new InputStreamReader(s.getInputStream()));
        for(int i=0;i<3;i++)
        {
            String line = br.readLine();
            if(line==null)//如果在dos命令行直接Ctrl+c那么就等于说录入的是null;那么fwout输出的也是null,服务器读取的也是null
                break;
            fwout.println(line);
            String infos=brin.readLine();
            if(infos.contains("欢迎登陆"))//如果服务器返回的信息中包含"欢迎登陆"字样,就跳出循环关
                break;
            System.out.println(infos);
        }
        s.close();
        br.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+"正在尝试登陆");
        try
        {
            for(int i=0;i<3;i++)
            {
                BufferedReader brin=new BufferedReader(new InputStreamReader(s.getInputStream()));
                String infos=brin.readLine();
                if(infos==null)
                    break;
                BufferedReader br=new BufferedReader(new FileReader("User.txt"));
                PrintWriter pwout=new PrintWriter(s.getOutputStream(),true);
                String name=null;
                boolean num=false;
                while((name=br.readLine())!=null)
                {
                    if(name.equals(infos))
                    {
                        num=true;
                        break;
                    }
                }
                if(num)
                {
                    System.out.println(infos+"登陆成功");
                    pwout.println(infos+"欢迎登陆");
                    break;
                }
                else
                {
                    System.out.println(infos+"登陆失败");
                    pwout.println("用户名不存在");
                }
            }
            
            s.close();
            //br.close();

        }
        catch (Exception e)
        {
        }
    }
}
class UserServer
{
    public static void main(String[] ages) throws Exception
    {
        ServerSocket ss=new ServerSocket(8888);
        while(true)
        {
            Socket s=ss.accept();
            new Thread(new UserThread(s)).start();
        }
    }
}

抱歉!评论已关闭.