分享

[实例]java.net.ConnectException: Connection timed out: connect

 爪一o_0一斗 2013-04-22
问题:
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.ResultSet;

import org.sql.IntoDB;

public class BaiduReferer {
public static void main(String[] args) throws UnknownHostException,
IOException, InterruptedException {
for(int i=0;i<1000;i++){
send("");
}
}
public static void send(String url) throws UnknownHostException,
IOException {
Socket socket = new Socket("www.baidu.com", 80);
StringBuffer sb = new StringBuffer("GET /" + url + " HTTP/1.1");
sb.append("\r\n");
sb.append("Host: www.baidu.com");
sb.append("\r\n");
sb
.append("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 GTB6");
sb.append("\r\n");
sb
.append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
sb.append("\r\n");
sb.append("Accept-Language: zh,en;q=0.8,zh-cn;q=0.5,en-us;q=0.3");
sb.append("\r\n");
sb.append("Accept-Encoding: gzip,deflate");
sb.append("\r\n");
sb.append("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
sb.append("\r\n");
sb.append("Keep-Alive: 300");
sb.append("\r\n");
sb.append("\r\n");

OutputStream socketOut = socket.getOutputStream();
socketOut.write(sb.toString().getBytes());
socket.shutdownOutput(); //半闭输出流

if(socket!=null){
socket.close();
}
}
}

在连接400-500次的时候,就报java.net.ConnectException: Connection timed out: connect异常
for(int i=0;i<1000;i++){
send("");
Thread(5000);
}

//结果是一样的
回答:
百度有防同一IP地址访问压力过大的屏蔽.

要是这样的话.
建议你把你的Socket 设置为多线程模式.进行sleep休眠.比如说访问一次停止2秒.或者更长.这样就不会有这个问题了.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多