java代理服务代码 java代理ip( 二 )


import
io.vertx.core.net.NetServer;
import
io.vertx.core.net.NetSocket;
/**
*
@author sneaky
*
@since 1.0.0
*/
public
class
MysqlProxyServer
{
private
static
final
Logger
logger
=
LoggerFactory.getLogger(MysqlProxyServer.class);
public
static
void
main(String[]
args)
{
Vertx.vertx().deployVerticle(new
MysqlProxyServerVerticle());
}
public
static
class
MysqlProxyServerVerticle
extends
AbstractVerticle
{
private
final
int
port
=
3306;
private
final
String
mysqlHost
=
"10.10.0.6";
@Override
public
void
start()
throws
Exception
{
NetServer
netServer
=
vertx.createNetServer();//创建代理服务器
NetClient
netClient
=
vertx.createNetClient();//创建连接mysql客户端
netServer.connectHandler(socket
-
netClient.connect(port,
mysqlHost,
result
-
{
//响应来自客户端的连接请求,成功之后 , 在建立一个与目标mysql服务器的连接
if
(result.succeeded())
{
//与目标mysql服务器成功连接连接之后 , 创造一个MysqlProxyConnection对象,并执行代理方法
new
MysqlProxyConnection(socket,
result.result()).proxy();
如何用JAVA实现一个代理服务器代理服务器的应用非常广泛 。比如,在企业网内部 , 它可以用来控制员工在工作时浏览的Internet内容 , 阻止员工访问某些类型的内容或某些指定的网站 。代理服务器实际上扮演着浏览器和Web服务器之间的中间人的角色 , 能够对浏览器请求进行各种各样的处理,能够过滤广告和Cookie,能够预先提取Web页面,使得浏览器访问页面的速度更快,等等 。
一、基础知识
不管以哪种方式应用代理服务器 , 其监控HTTP传输的过程总是如下:
步骤一:内部的浏览器发送请求给代理服务器 。请求的第一行包含了目标URL 。
步骤二:代理服务器读取该URL,并把请求转发给合适的目标服务器 。
步骤三:代理服务器接收来自Internet目标机器的应答,把应答转发给合适的内部浏览器 。
例如,假设有一个企业的雇员试图访问网站 。如果没有代理服务器,雇员的浏览器打开的Socket通向运行这个网站的Web服务器,从Web服务器返回的数据也直接传递给雇员的浏览器 。如果浏览器被配置成使用代理服务器,则请求首先到达代理服务器;随后,代理服务器从请求的第一行提取目标URL,打开一个通向的Socket 。当返回应答时,代理服务器把应答转发给雇员的浏览器 。
当然,代理服务器并非只适用于企业环境 。作为一个开发者,拥有一个自己的代理服务器是一件很不错的事情 。例如 , 我们可以用代理服务器来分析浏览器和Web服务器的交互过程 。测试和解决Web应用中存在的问题时,这种功能是很有用的 。我们甚至还可以同时使用多个代理服务器(大多数代理服务器允许多个服务器链接在一起使用) 。例如,我们可以有一个企业的代理服务器,再加上一个用java编写的代理服务器,用来调试应用程序 。但应该注意的是,代理服务器链上的每一个服务器都会对性能产生一定的影响 。
二、设计规划
正如其名字所示 , 代理服务器只不过是一种特殊的服务器 。和大多数服务器一样,如果要处理多个请求,代理服务器应该使用线程 。下面是一个代理服务器的基本规划: