客户端部分代码:
public static void main(String args[]) throws Exception {
        final int HTTP_PORT = 8189;
        try{
        Socket socket = new Socket("127.0.0.1", HTTP_PORT);
        BufferedWriter out
                = new BufferedWriter(new OutputStreamWriter(socket.
                getOutputStream()));
        BufferedReader in
                = new BufferedReader(new InputStreamReader(socket.
                getInputStream()));
        
        out.write("POST / HTTP/1.1\r\n");
        out.write("Host:127.0.0.1:80\r\n");
        out.write("Connection:Keep-alive\r\n");
        //out.newLine();
        out.flush();服务器端:
public static void main(String[] args )
   {  
      try
      {  
         // establish server socket
         ServerSocket s = new ServerSocket(8189);
         System.out.println("开始监听8189端口......");
         // wait for client connection
         Socket incoming = s.accept( );
         BufferedReader in = new BufferedReader
            (new InputStreamReader(incoming.getInputStream()));
         PrintWriter out = new PrintWriter
            (incoming.getOutputStream(), true /* autoFlush */);
            
         String line = in.readLine();
         System.out.println("接收到客户端发送的消息为: "+line);问题: 为何服务器端只能收到: POST / HTTP/1.1 这一行消息啊??我的原意想让服务器收到  POST / HTTP/1.1
                        Host:127.0.0.1:80
                        Connection:Keep-alive

解决方案 »

  1.   

    老大,你只调用了一次 readLine(),当然是遇到第一个 "\r\n" 就结束了。
      

  2.   

    while (true) {
        String line = in.readLine();
        if (line == null) break; // 此时意味着对方已经将 socket 关闭
        if (line.length == 0) break; // 此时意味着 HTTP Request Header 结束
        System.out.println("接收到客户端发送的消息为: "+line);
    }
      

  3.   

    还有,你客户端程序的那个
       //out.newLine();
    不应该注释掉,它是 HTTP Request 的一个必要部分!