A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天学校TCP 客户端 并发登录的时候,代码编译成功,运行的时候,输入完 java LoginServer 和 java LoginClient 之后就 没有了,光标停在下一行,挂在那里,没有显示连接成功。
我随便在键盘输入,没有任何反应。之后用ctrl+c 结束会出来之前随意输入的文字。这是什么问题?
我的user.txt和代码放一个文件夹了。
附上我的代码。
/* 建立客户端与服务端的互相对话
        客户端通过键盘录入用户名
        服务端对这个用户名进行校验
       
        如果该用户名存在,在服务端显示XX,已经登录
        并在客户端显示,XXX 欢迎光临

        如果该用户存在,在服务端显示,尝试登录
        并在客户端显示XXX,该用户不存在

        最多登录三次。
*/

import java.net.*;
import java.io.*;
class  LoginClient
{
        public static void main(String[] args) throws Exception
        {
                Socket s = new Socket("58.246.247.252",10009);  
               
                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(); //String info= bufln.readLine();
                        System.out.println("info"+info);
                        if(info.contains("欢迎"))
                                break;
                }
                bufr.close();
                s.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+".....connected");
                try
                {
                        for(int x =0;x<3;x++)
                        {
                                BufferedReader bufIn= new BufferedReader (new InputStreamReader(s.getInputStream()));
                               
                                String name =bufIn.readLine();
                                if(name ==null)
                                        break;
                                BufferedReader bufr =new BufferedReader (new FileReader("user.txt"));

                                PrintWriter out =new PrintWriter(s.getOutputStream(),true);

                                String line =null;

                                boolean flag =false ;

                                while((line=bufr.readLine())!=null)
                                {        if(line.equals(name))
                                        {
                                                flag =true ;
                                                break;
                                        }
                                }       
                                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+"校验失败");
                }
        }
}
class LoginServer
{
        public static void main(String [] args) throws Exception
        {
                ServerSocket ss =new ServerSocket (10009);
                while(true)
                {
                        Socket s =ss.accept();

                        new Thread (new UserThread(s)).start();
                }
        }
}


2 个回复

倒序浏览
抱歉,不能还原你所遇到的问题,我采用你的代码,只更改了ip,和建立user.txt之后,便成功运行了。
也顺利进行了验证。
回复 使用道具 举报
要么连接上,要么改成错误IP后,就refuse或者timeout,总之就不是楼主所言的问题。只能到此打止了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马