先给出两个测试类:
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请求的第一句
谁能帮我解决下吗
咳~想多给点分怎么不能呢??
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请求的第一句
谁能帮我解决下吗
咳~想多给点分怎么不能呢??
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();
}
}
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();
}
}
大哥可以告诉我原因吗,这个多出来的println有什么用
xxxx
xxxxxxxxxx
xxxxxxxxx
空行
----------------------
下面就是显示的信息。
因为你打的是GET http://127.0.0.1 HTTP/1.1 而没有空行,那么他就把他当作http协议头了,如果你在下面打个空行出来,他就把空行上面的当作协议头,空行下面的当作要输出的内容。所有他就能输出了。有时间去看看http协议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.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();
}
}