我想使用java做一個簡單的http客戶端服務器。它將顯示客戶端的請求以及服務器的響應。例如服務器將發回http服務器和客戶端實現頭並得到方法
HTTP/1.0 200 OK
Connection: Close. etc.
以前我有一個回聲客戶端服務器。現在我已經把我的回顯服務器變成了一個http服務器。我已經嘗試瞭如何實現頭部和客戶端的Goggling,但我通常注意到所有的例子都使用了apache框架。有沒有辦法在沒有Apache框架的情況下實現這些方法。 我,我正在嘗試轉換成HTTP客戶端的回聲:
import java.io.*;
import java.net.*;
public class Ec1
{
public static void main(String[] args)
{
try
{
Socket s = new Socket("127.0.0.1", 80);
BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter w = new PrintWriter(s.getOutputStream(), true);
BufferedReader con = new BufferedReader(new InputStreamReader(System.in));
String line;
do
{
line = r.readLine();
if (line != null)
System.out.println(line);
line = con.readLine();
w.println(line);
}
while (!line.trim().equals("bye"));
}
catch (Exception err)
{
System.err.println(err);
}
}
}
我的HTTP服務器:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Echo
{
protected void start() {
ServerSocket s;
System.out.println("Webserver starting up on port 80");
try {
// create the main server socket
s = new ServerSocket(80);
} catch (Exception e) {
System.out.println("Error: " + e);
return;
}
Socket clientSocket = null;
System.out.println ("Waiting for connection.....");
try {
clientSocket = s.accept();
System.out.println("Connection, sending data.");
BufferedReader in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
String str = ".";
while (!str.equals(""))
str = in.readLine();
out.println("HTTP/1.0 200 OK");
out.println("Content-Type: text/html");
out.println("Server: Bot");
out.println("");
out.println("<H1>Welcome to the Ultra Mini-WebServer</H2>");
out.flush();
clientSocket.close();
s.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
public static void main(String args[]) {
WebServer ws = new WebServer();
ws.start();
}
}