我正在尝试创建代理服务器。从网站读取字节
我想逐字节读取网站,以便我可以显示图像和所有其他东西。我尝试了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服务器的连接(不关闭与用户的连接),通过此连接转发请求,获取答复并将其转发回客户端。您将使用线程处理多个连接(同时和/或在不同的时间)。
'赶上(例外五){}'失去一开始 – artbristol
请请请请不要尝试编写自己的代理服务器,甚至是Apache的HTTP本身建议不使用自己的代理服务器,除非你知道你'正在做,而且这个代码已经在YEARS成熟了。其他人可以使用未受保护的代理服务器来屏蔽流量。 – dardo
如果这不是一个类的项目,我建议不写你自己的代理服务器。 – aglassman