先给出两个测试类:
import java.io.*;
import java.net.*;
public class Server {
         /*监听器*/
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(80);
Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStrea()));
PrintWriter out = new PrintWriter(client.getOutputStream());
String str;
while((str= in.readLine())!=null)
System.out.println(str);
out.println("has receive...");
out.flush();
client.close();
server.close();
}
}import java.io.*;
import java.net.*;
public class Client {
static Socket client; public static void main(String[] args) throws Exception {
client = new Socket("127.0.0.1", 80);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStrea()));
PrintWriter out = new PrintWriter(client.getOutputStream());
out.println("GET http://127.0.0.1 HTTP/1.1");  //注意这两句话
out.println("get http://127.0.0.1 HTTP/1.1");  //有点不同
out.flush();
client.close();
}
}
上面的代码当然是先运行Server,再运行Client。按理说Server要打印出在Client输入的两句话,可结果是什么都没有。
可是把Client里那两句话换下位置,或是把"GET"改下,程序可以得到输出。现在我要的就是第一句打印出"GET http://127.0.0.1 HTTP/1.1",可能有人看出来了这是http请求的第一句
谁能帮我解决下吗  
咳~想多给点分怎么不能呢??

解决方案 »

  1.   

    lz的问题有点像老师在考学生,o(∩_∩)o...这样试一试
    import java.io.*;
    import java.net.*;
    public class Client {
        static Socket client;    public static void main(String[] args) throws Exception {
            client = new Socket("127.0.0.1", 80);
            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStrea()));
            PrintWriter out = new PrintWriter(client.getOutputStream());
            out.println("GET http://127.0.0.1 HTTP/1.1");  //注意这两句话
    out.println("");  
    out.println("");  
            out.println("get http://127.0.0.1 HTTP/1.1");  //有点不同
    out.println("");  
    out.println("");  
            out.flush();
            client.close();
        }
    }
      

  2.   

    怎么还没改完就发了?
    import java.io.*;
    import java.net.*;
    public class Client {
        static Socket client;    public static void main(String[] args) throws Exception {
            client = new Socket("127.0.0.1", 80);
            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStrea()));
            PrintWriter out = new PrintWriter(client.getOutputStream());
            out.println("GET http://127.0.0.1 HTTP/1.1");  //注意这两句话
    out.println("");  
    out.println("");  
    out.println("GET http://127.0.0.1 HTTP/1.1");  //注意
    out.println("get http://127.0.0.1 HTTP/1.1");  //有点不同
    out.println("");  
    out.println("");  
            out.flush();
            client.close();
        }
    }
      

  3.   

    试下了下,发现只要有最后一个out.println("")其他的没有也行
    大哥可以告诉我原因吗,这个多出来的println有什么用
      

  4.   

    答:你若看一下HTTP协议就很清楚了。HTTP请求包中HTTP请求头与数据之间必须有一个空行分隔。
      

  5.   

    http1.1的协议是这样的GET http://127.0.0.1 HTTP/1.1
    xxxx
    xxxxxxxxxx
    xxxxxxxxx
    空行
    ----------------------
    下面就是显示的信息。
    因为你打的是GET http://127.0.0.1 HTTP/1.1 而没有空行,那么他就把他当作http协议头了,如果你在下面打个空行出来,他就把空行上面的当作协议头,空行下面的当作要输出的内容。所有他就能输出了。有时间去看看http协议o(∩_∩)o... 对你会有帮助的。
      

  6.   

    我这里运行一切正常,可以正确打印出来,不知道你那里有什么问题!!
    import java.io.*;
    import java.net.*;public class Client {
      static Socket client;  public static void main(String[] args) throws Exception {
        client = new Socket("127.0.0.1", 80);
        BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        PrintWriter out = new PrintWriter(client.getOutputStream());
        out.println("GET http://127.0.0.1 HTTP/1.1"); // 注意这两句话
        out.println("get http://127.0.0.1 HTTP/1.1"); // 有点不同
        out.flush();
        client.close();
      }
    }import java.io.*;
    import java.net.*;public class Server {
      /* 监听器 */
      public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(80);
        Socket client = server.accept();
        BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        PrintWriter out = new PrintWriter(client.getOutputStream());
        String str;
        while ((str = in.readLine()) != null)
          System.out.println(str);
        out.println("has receive...");
        out.flush();
        client.close();
        server.close();
      }
    }
      

  7.   

    谢谢大家,http协议的格式真严格,是我疏忽了