import java.io.*;
import java.net.*;
class Handler implements Runnable{
private Socket socket;
public Handler(Socket socket){
this.socket = socket;//初始化
}
@Override
public void run() {
// TODO Auto-generated method stub
try{
//输出连接的地址和端口
System.out.println("New connection accepted : " + socket.getInetAddress() + " : " + socket.getPort());
//建立输入和输出的stream
InputStream inputStream = socket.getInputStream();
OutputStream outPutStream = socket.getOutputStream();
//设置读入读出的区域
byte []b = new byte[10000];
//将http请求报文读入到区域里
inputStream.read(b);
String clientWords = new String(b);
if(clientWords != null){
//将http报文的请求行分段处理
String []strs = clientWords.trim().split(" ");
//判断请求的类型,是GET,POST,HEAD,PUT,DELETE
if(strs[0].endsWith("GET") ){
//从http请求行里分段提取url的信息
int index = strs[1].indexOf("/") + 2;
String temp = strs[1].substring(index);
int endindex = temp.indexOf("/");
String url = temp.substring(0,endindex);
//输出请求的url
System.out.println(url);
//建立与服务器的socket
Socket clientSocket = new Socket(url,80);
//建立与服务器的输入输出流
InputStream input = clientSocket.getInputStream();
OutputStream outToClient = clientSocket.getOutputStream();
//将http返回报文读回到区域里
outToClient.write(b);
byte[] back = new byte[10000];
input.read(back);
outPutStream.write(back);
socket.close();
}
}
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(socket != null) socket.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}