Socket类问题,望各位大神解答。

用socket做了一个联网测试,一个服务器类,一个客户端类。当两个类连接成功之后,
服务器类会打印客户端类中的“hello”;而客户端也会打印服务器端的“echo:hello”。
当我程序运行的时候,前几次都没有出现预期效果;停止再重复运行几次之后,效果又
出来了。求各位大神解释解释(运行顺序没有错,先服务器类,后客户端类,Ip,端口都对应)。

  • 服务器daunting代码
    */
    public class EchoServerDemo {

    public static void main(String[]args){
    try {
    ServerSocket ss = new ServerSocket(6000);
    System.out.println("服务器已启动,正在连接...");
    Socket socket = ss.accept(); //等待客户端连接,该方法会阻塞;
    InputStream input = socket.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(input));
    String info = br.readLine();
    System.out.println(info);
    System.out.println(info);
    OutputStream output = socket.getOutputStream();
    PrintStream ps = new PrintStream(output);
    ps.println("echo:"+info);
    output.close();
    input.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    //客户端类
    public class EchoClientDemo {
    public static void main(String[]args) {
    //连接服务器
    try {
    Socket socket = new Socket("localhost",6000); //(IP,端口);localhost:表示本机ip
    System.out.println("连接成功!");
    OutputStream out = socket.getOutputStream();
    InputStream in = socket.getInputStream();
    PrintStream ps = new PrintStream(out);
    ps.println("hello");

    BufferedReader br = new BufferedReader(new InputStreamReader(in));

    String info = br.readLine();
    System.out.println(info);
    out.close();
    in.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

http://blog.csdn.net/wuyuan2011woaini/article/details/8056613

out.close前先Thread.sleep一段时间,其实这代码逻辑本身有点怪异,看着心累