我正在尝试创建代理服务器。
我想逐字节读取网站,以便显示图像和所有其他内容。我试过 readLine 但我无法显示图像。您对如何更改代码并将所有数据与 DataOutputStream 对象发送到浏览器有什么建议吗?
try{
Socket s = new Socket(InetAddress.getByName(req.hostname), 80);
String file = parcala(req.url);
DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader dis = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter socketOut = new PrintWriter(s.getOutputStream());
socketOut.print("GET "+ req.url + "\n\n");
//socketOut.print("Host: "+req.hostname);
socketOut.flush();
String line;
while ((line = dis.readLine()) != null){
System.out.println(line);
}
}
catch (Exception e){}
}
编辑部分
这是我应该做的。我可以阻止被禁止的网站,但不能在我的程序中允许其他网站。
在过滤器程序中,您将在指定端口打开一个 TCP 套接字并等待连接。如果请求到来(即客户端键入一个 URL 来访问一个网站),应用程序将处理它以确定是否允许访问,然后使用相同的套接字将回复发送回客户端。在客户端打开她与 WebPolice 的连接后(并且她的请求已被检查并被允许),需要向客户端显示真实的网页。因此,既然用户已经提出了请求,那么现在轮到 WebPolice 转发请求,以便用户获取网页。因此,WebPolice 充当客户端并请求网页。这意味着您需要打开与 Web 服务器的连接(不关闭与用户的连接),通过此连接转发请求,得到回复并将其转发回客户端。您将使用线程来处理多个连接(同时和/或不同时间)。