解决方案 »

  1.   


    import java.io.*;
    import java.net.*;
    class Run implements Runnable{
        public void run(){
        }
    }
    public class DailyAdviceClient{
        public void go(){
            try{
                Socket socket = new Socket("127.0.0.1",4242);
                    InputStreamReader IR = new InputStreamReader(socket.getInputStream());
                    BufferedReader BR = new BufferedReader(IR);
                while(true){
                   
                    String advice = BR.readLine();
                    System.out.println(advice);
                }
            }catch(IOException ex){
                ex.printStackTrace();
            }finally{
            }
     
        }
     
        public static void main(String[] args){
            DailyAdviceClient dac = new DailyAdviceClient();
            dac.go();
        }
    }
      

  2.   


     Socket socket = new Socket("127.0.0.1",4242);            
        InputStreamReader IR = new InputStreamReader(socket.getInputStream());        
            BufferedReader BR = new BufferedReader(IR);               //写在外面获取一次就可以了.
    while(true){
     String advice = BR.readLine();               
     System.out.println(advice);            }
      

  3.   


    试了一下,发现Server显示了一次,Client则一次都没有输出。
      

  4.   

    解决了,最后客户端代码跟三楼一样,服务端代码如下:
    import java.io.*;
    import java.net.*;public class DailyAdviceServer{
    String[] advice = {"Thank you","hello world","My god","Come on"};
    public void go(){
    try{
    ServerSocket socket = new ServerSocket(4242);
    Socket sock = socket.accept();
    PrintWriter PW = new PrintWriter(sock.getOutputStream());
    while(true){
    String ad = advice[(int)(Math.random()*advice.length)];
    PW.println(ad);
    System.out.println(ad);
    }
    }catch(IOException ex){
    ex.printStackTrace();
    }
    } public static void main(String[] args){
    DailyAdviceServer das = new DailyAdviceServer();
    das.go();
    }
    }