//: JabberClient.java
// Very simple client that just sends
// lines to the server and reads lines
// that the server sends.package thinkinginjava.num15;import java.net.*;
import java.io.*;public class JabberClient {
    public static void main(String[] args) throws IOException {
        // Passing null to getByName() produces the
        // special "Local Loopback" IP address, for
        // testing on one machine w/o a network:
        InetAddress addr =
            InetAddress.getByName(null);
        // Alternatively, you can use
        // the address or name:
        // InetAddress addr =
        //    InetAddress.getByName("127.0.0.1");
        // InetAddress addr =
        //    InetAddress.getByName("localhost");
        System.out.println("addr = " + addr);
        Socket socket =
            new Socket(addr, JabberServer.PORT);
        // Guard everything in a try-finally to make
        // sure that the socket is closed:
        try {
            System.out.println("socket = " + socket);
            BufferedReader in =
                new BufferedReader(
                new InputStreamReader(
                socket.getInputStream()));
            // Output is automatically flushed
            // by PrintWriter:
            PrintWriter out =
                new PrintWriter(
                new BufferedWriter(
                new OutputStreamWriter(
                socket.getOutputStream())), true);
            for (int i = 0; i < 10; i++) {
                out.println("howdy " + i);
                String str = in.readLine();
                System.out.println(str);
            }
            out.println("END");
        } finally {
            System.out.println("closing...");
            socket.close();
        }
    }
} ///:~
上面代码中的PrintWriter out =
                new PrintWriter(
                new BufferedWriter(
                new OutputStreamWriter(
                socket.getOutputStream())), true);
true为自动刷新缓冲区。

解决方案 »

  1.   

    是不是我用错了输入输出流啊不是这个问题
    和输出输入流的初始化化有关系
    BufferedReader in =
                    new BufferedReader(
                    new InputStreamReader(
                    socket.getInputStream()));
                // Output is automatically flushed
                // by PrintWriter:
                PrintWriter out =
                    new PrintWriter(
                    new BufferedWriter(
                    new OutputStreamWriter(
                    socket.getOutputStream())), true);
                
    的顺序改变试一试
    PrintWriter out =
                    new PrintWriter(
                    new BufferedWriter(
                    new OutputStreamWriter(
                    socket.getOutputStream())), true);
    BufferedReader in =
                    new BufferedReader(
                    new InputStreamReader(
                    socket.getInputStream()));
                
    服务器端的也变变  应该可以 发生阻塞了 可能