我帮人做一个这样测试程序,他有个搜索网站,我的程序要对他的搜索网站发送大量的搜索请求以测试它的压力,经过我的测试他的网站在一个时间段内对一个IP的发送量有限制,每次发送到1200左右,就再也发送不上(抛出异常为:java.net.SocketException: Unexpected end of file from server),换一个IP或者隔一段时间(这个时间不止一两分钟咯)就好了。
所以,我想是否能通过网上搜索代理IP,然后每个线程使用一个IP来对他进行发送,从而避免它在一个时间段内的IP发送量的限制。
这样就会有几个问题: 1、首先网上搜索代理IP,这种办法是否行得通?如果行的话,怎么网上所搜可用代理IP。2、多线程,每个线程使用一个IP上网,也就是一台机器同时使用多个IP上网,这能行吗?
谢谢,有经验的同道予以指教!谢谢!
问题补充
找到一个多线程的例子
http://tech.ddvip.com/2008-09/122155634865849.html
不知道是不是你想要的: 你可以试试
[quote]
8.多线程模式下使用httpclient
多线程同时访问httpclient,例如同时从一个站点上下载多个文件。对于同一个HttpConnection同一个时间只能有一个线程访问,为了保证多线程工作环境下不产生冲突,httpclient使用了一个多线程连接管理器的类:MultiThreadedHttpConnectionManager,要使用这个类很简单,只需要在构造HttpClient实例的时候传入即可,代码如下:
[code="java"] MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
HttpClient client = new HttpClient(connectionManager);[/code]
以后尽管访问client实例即可。[/quote]
要把你写的代码发上来让我们也学习一下噢
1.你是作网站搜索的么?找个好点的代理发布网站解析就行了
2.不知道应该可以
3.httpClient.getHostConfiguration().setProxy(hostName,port);
我刚刚用org.apache.common.httpclient来作假客户端去连google翻译
URL url = new URL("http://www.baidu.com");
// 创建代理服务器
InetSocketAddress addr = new InetSocketAddress("192.168.0.254",
8080);
// Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); // Socket 代理
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理
// 如果我们知道代理server的名字, 可以直接使用
URLConnection conn = url.openConnection(proxy);