2007-10-09
用socket抓取网页 建立连接后如何复用同一个socket?
以下是程序
只能抓取前面一个网页 后面复用的不行
只能抓取前面一个网页 后面复用的不行
public class text
{
public static void main(String[] args) throws IOException
{
String hostname = "www.javaeye.com";
int port = 80;
InetAddress addr = InetAddress.getByName(hostname);
System.out.println(addr);
Socket s = new Socket(hostname, port);
// s.setSoTimeout(99999);
s.setKeepAlive(true);
if(s.getKeepAlive())
{
System.out.println("******************keep-alive*****************");
}
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
wr.write("GET / HTTP/1.1" + "\r\n" + "Host: www.javaeye.com" + "\r\n" + "Connection: Keep-Alive" + "User-Agent: tse" + "\r\n");
wr.write("\r\n");
wr.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line;
while((line = br.readLine()) != null)
{
System.out.println(line);
}
System.out.println(s.isClosed());
//以下想用复用同一个HOST+port的socket,可是不行
wr.write("GET /search HTTP/1.0" + "\r\n" + "Host: www.javaeye.com" + "\r\n" + "Connection: Keep-Alive" + "User-Agent: tse" + "\r\n");
// wr.write("GET /");
// wr.write("HOST:" + hostname + "\r\n");
wr.write("\r\n");
wr.flush();
BufferedReader b = new BufferedReader(new InputStreamReader(s.getInputStream()));
String linee;
if(s.getInputStream().available() > 0)
{
System.out.println("hava something");
}
while((linee = b.readLine()) != null)
{
System.out.println(linee);
}
}
}
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 2470 次
- 性别:

- 来自: 南京

- 详细资料
搜索本博客
最新评论
-
不解的内存泄露
楼主解决了吗?
-- by jems -
不解的内存泄露(2)
我在做一个Spider的时候,也是发现内存泄露问题。 困扰了我两个星期,后来发现 ...
-- by Autinhorse -
不解的内存泄露
我在做一个Spider的时候,也是发现内存泄露问题。 困扰了我两个星期,后来发现 ...
-- by Autinhorse -
很希望这个版的事实版主来 ...
waldenlake 写道ywlqi 写道应届生有如此经历暴强了,不知道实际怎样 ...
-- by ywlqi -
很希望这个版的事实版主来 ...
成功了是自己努力,不成功是因为别人不公平。 仔细看看这个版里的口径,就感觉都是事 ...
-- by bcccs






评论排行榜