`
waldenlake
  • 浏览: 17221 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

用socket抓取网页 建立连接后如何复用同一个socket?

阅读更多
以下是程序
只能抓取前面一个网页 后面复用的不行


public class text
{
public static void main(String[] args) throws IOException
{
String hostname = "www.iteye.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.iteye.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.iteye.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);
}
}
}


分享到:
评论

相关推荐

    使用socket抓取网页源码

    本人前面已经写了一个抓取网页的程序,准确性很高,但是没有蜘蛛的爬行功能,而且效率也不是怎么很理想;本人经过一段时间的研究,参考了其他高手的程序,然后自己写了一个网页抓取的,具有蜘蛛爬行功能,大家有兴趣...

    抓取网页源代码

    网页源代码抓取是网络编程中的一个重要概念,它涉及到如何通过程序从互联网上获取HTML、CSS、JavaScript等网页内容。在本案例中,我们将聚焦于使用C++编程语言,特别是结合Visual Studio 2012环境,利用socket编程来...

    Socket编程 目录连接.doc

    - 使用 `Socket` 类建立连接。 - 发送 HTTP 请求获取网页内容。 - 解析响应内容。 **2.3 实现广播信使程序** - 使用 `MulticastSocket` 类创建多播套接字。 - 加入多播组。 - 发送和接收多播数据包。 #### 三、...

    基于TCP面向连接的 Socket网络编程实验

    4. 编写一个基于TCP面向连接的Socket网络应用程序,客户端发出数据请求命令,服务器响应并与客户端进行交互。 5. 应用相关软件进行简单的协议分析。 二、实验环境 1. Windows系列服务器 2. TCP/IP协议 3. 编程语言...

    通过java socket实现屏幕网络监控

    客户端则需要创建一个Socket,指定服务器的IP地址和端口号,然后与服务器建立连接。 实现屏幕监控的关键在于数据的传输。屏幕图像通常以像素矩阵的形式存储,因此需要将这些像素信息编码为字节流,通过Socket发送到...

    VC编程之socket

    当有客户端连接时,服务器调用`accept()`函数来接受新的连接,并为每个连接创建一个新的Socket描述符。 在客户端,我们使用`connect()`函数与服务器建立连接。一旦连接建立,客户端和服务器就可以通过`send()`和`...

    【???】php socket cURL

    4. **关闭Socket**:完成通信后,使用`socket_close()`关闭Socket连接。 **cURL库** cURL是另一款强大的URL传输库,它提供了丰富的功能,包括HTTP、FTP、SMTP等多种协议的支持,广泛应用于PHP中。cURL库提供了更高...

    原生浏览器socket本地代理

    标题中的“原生浏览器socket本地代理”指的是在浏览器中使用原生的Socket接口来实现一个本地代理服务。这种代理服务通常用于绕过某些网络限制,或者进行数据抓取和分析。本地代理允许浏览器通过Socket连接到指定的...

    发那科机器人与视觉socket通讯

    在FANUC机器人与视觉系统通讯中,IO信号可能用来同步机器人的运动与视觉检测的结果,例如当视觉系统检测到目标工件时,发送一个信号给机器人启动抓取动作。 8. **系统变量**:系统变量是FANUC机器人控制系统内预设...

    UR经典机器人程序范围,包括与视觉socket通讯

    为了实现Socket通讯,我们需要在URScript中创建一个Socket对象,设置服务器的IP地址和端口号,并进行连接。一旦连接建立,就可以通过发送和接收数据来传递视觉系统的检测结果。例如,视觉系统可能发送一个包含目标...

    基于Socket的多线程C#爬虫程序

    本项目利用C#的`System.Threading`命名空间,创建多个线程,每个线程负责一个网页的抓取,使得爬虫能够并行工作,提升了整体的爬取效率。 在实现过程中,C#的`WebClient`类或`HttpClient`类通常被用于发送HTTP请求...

    抓封包C++原程序.zip_c++封包_socket抓包程序_封包_抓包_抓封包

    1. **创建Socket**:使用`socket()`函数创建一个socket实例,指定其类型(如TCP或UDP)和协议(如IP)。 2. **绑定到端口**:使用`bind()`函数将socket与本地IP地址和端口号关联,以便接收数据。 3. **监听(仅对...

    Socket通信编程传输协议分析的python代码及wireshark抓取文件包

    首先,客户端发送一个SYN(同步序列编号)包到服务器,然后服务器回应一个SYN+ACK包,最后客户端再发送一个ACK(确认)包,确认连接建立。 2. **顺序和确认**:TCP使用序列号和确认应答机制确保数据包按顺序到达,并...

    简明Socket编程指南

    与Unix Socket相比,WATTCP提供了一个更简单直观的编程接口。由于DOS缺乏强大的网络文件系统,因此在DOS下使用Socket并不像在Unix中那样直接方便。WATTCP支持DOS下的基本Socket接口,包括面向连接的TCP (SOCK_STREAM...

    socket http/https 模拟登录 请求页面等

    Socket是网络通信的基本构建块,它提供了一个低级别的接口,允许程序通过网络发送和接收数据。Socket可以视为进程间的通信管道,通过IP地址和端口号来定位网络上的其他进程。在Python中,我们可以使用socket库来创建...

    Linux下Socket编程

    在实际编程中,我们还需要处理错误和异常,例如使用`setsockopt()`来设置Socket选项,或者用`select()`或`poll()`进行多路复用,以便同时处理多个连接。此外,对于TCP Socket,还需要了解半关闭(half-closed)状态...

    牛逼抓包工具 Socket通讯抓包

    很好用的抓包工具 实现Socket客户端,服务端,转发器调用测试 很实用 Socket开发的最佳工具 很好用的抓包工具 实现Socket客户端,服务端,转发器调用测试 很实用 Socket开发的最佳工具

    输入网址抓取网址内容。

    本项目以VC6.0编程环境为平台,实现了一个简单的网页内容抓取程序,让我们来深入探讨其中涉及的关键知识点。 首先,我们需要理解**VC6.0**。这是一个由微软公司开发的老版Visual C++集成开发环境,它支持C++编程,...

    c语言网页抓取程序源代码

    在本项目中,我们关注的是一个基于C语言的网页抓取程序,该程序在Linux环境下运行,具备多线程功能。下面将详细讲解这个程序的关键知识点。 1. **C语言编程**:C语言是一种底层、高效且通用的编程语言,常用于系统...

Global site tag (gtag.js) - Google Analytics