基本原理:
代理服务器打开一个端口接收浏览器发来的访问某个站点的请求,从请求的字符串中解析出用户想访问哪个网页,让后通过URL对象建立输入流读取相应的网页内容,最后按照web服务器的工作方式将网页内容发送给用户浏览器
源程序:
import java.net.*;
import java.io.*;
public class MyProxyServer
{
public static void main(String args[])
{
try
{
ServerSocket ss=new ServerSocket(8080);
System.out.println("proxy server OK");
while (true)
{
Socket s=ss.accept();
process p=new process(s);
Thread t=new Thread(p);
t.start();
}
}
catch (Exception e)
{
System.out.println(e);
}
}
};
class process implements Runnable
{
Socket s;
public process(Socket s1)
{
s=s1;
}
public void run()
{
String content=" ";
try
{
PrintStream out=new PrintStream(s.getOutputStream());
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
String info=in.readLine();
System.out.println("now got "+info);
int sp1=info.indexOf(' ');
int sp2=info.indexOf(' ',sp1+1);
String gotourl=info.substring(sp1,sp2);
System.out.println("now connecting "+gotourl);
URL con=new URL(gotourl);
InputStream gotoin=con.openStream();
int n=gotoin.available();
byte buf[]=new byte[1024];
out.println("HTTP/1.0 200 OK");
out.println("MIME_version:1.0");
out.println("Content_Type:text/html");
out.println("Content_Length:"+n);
out.println(" ");
while ((n=gotoin.read(buf))>=0)
{
out.write(buf,0,n);
}
out.close();
s.close();
}
catch (IOException e)
{
System.out.println("Exception:"+e);
}
}
};
itheshe
- 粉丝: 2
- 资源: 58
最新资源
- Chrome代理 switchyOmega
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈