黑马程序员技术交流社区

标题: 求解! [打印本页]

作者: 忄雾飞扬    时间: 2013-10-29 23:33
标题: 求解!
本帖最后由 忄雾飞扬 于 2013-10-30 09:05 编辑

import java.io.*;
import java.net.*;
//为什么 会一直处于阻塞状态呢?
//昨天晚上我自己调试找到了阻塞的地方在哪了,但解决不了?


class UserThread implements Runnable
{
        private Socket s;
        UserThread(Socket s){
                this.s = s;
        }       
        public void run(){
                try
                {
                        for (int x = 0;x<3 ;x++ )
                        {
                       
                        String ip = s.getInetAddress().getHostAddress();
                        System.out.println(ip + "come in !!!");
                        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
                        String name = bufIn.readLine();
                        System.out.println("名字发过来了");//就是这,为什么readLine()没有读到信息?
                        BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));
                        PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
                       
                        if(name == null)
                                break;
                        String line = null;
                        boolean flag = false;
                        while((line = bufr.readLine())!=null){
                                if(line.equals(name)){
                                        flag = true;
                                        break;
                                }
                        }
                       
                                if(flag){
                                        System.out.println(name+",已登录");
                                        pw.println("欢迎"+name+"的归来");
                                        break;
                                }
                                else
                                {
                                        System.out.println(name+",尝试登录");
                                        pw.println("鄙视"+name+"的盗号");
                                }
                        }
                        s.close();
                }
                catch (Exception e)
                {
                        throw new RuntimeException();
                }
        }
               
}
class UserClient
{
        public static void main(String[] args) throws Exception
        {
                Socket s = new Socket("127.0.0.1",10011);
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
                BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
                for(int x = 0; x < 3; x++){
                        String names = bufr.readLine();
                        if(names == null)
                                break;
                        pw.write(names);
                        System.out.println("内容发送");
                        String str = bufIn.readLine();
                        System.out.println(str);
                    if(str.contains("欢迎"))
                                break;
                }bufr.close();
                s.close();
        }
}
class UserServer
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss = new ServerSocket(10011);
                while(true){
                        Socket s = ss.accept();
                        new Thread(new UserThread(s)).start();
                }
        }
}


作者: 王雷1    时间: 2013-11-1 21:01
真是没看懂你的代码 是怎么运行起来的。  没有公共类。   两个 普通类里都有main函数
作者: 杨增坤    时间: 2013-11-2 13:30
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bufIn.readLine();
System.out.println("名字发过来了");//就是这,为什么readLine()没有读到信息?





因为你有的是缓冲流,你在读取后试着刷新一下,这样就能读取到了!


希望对你有帮助!

作者: 黄炳期    时间: 2013-11-2 13:38
帖子已重新分类,如果问题还没解决,可重新提问。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2