使用java实现http代理服务器的问题
我用java的ServerSocket实现了一个代理服务器,对每个请求,新建一个线程处理。
如下代码是通过我自己写的代理访问http://www.javaeye.com/topic/154258:
HttpClient httpClient = new HttpClient();
// 设置代理服务器的ip地址和端口
httpClient.getHostConfiguration().setProxy("127.0.0.1", 8888);
// 使用抢先认证
httpClient.getParams().setAuthenticationPreemptive(true);
GetMethod method = new GetMethod("http://www.javaeye.com/topic/154258");
// method.addRequestHeader("Content-type", "text/xml; charset=utf-8");
try {
int statusCode = httpClient.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
String resultXml = method.getResponseBodyAsString();
System.out.println(resultXml);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
本来设想的,在代理服务器端,只需要一个线程来处理就可以了,我认为只会有一个socket,但是服务器端却启动了四个线程,处理了四个socket,这是怎么回事呢?
请教大家。