Java 使用套接字读取html并打印它

Java 使用套接字读取html并打印它,java,sockets,Java,Sockets,我正在学习Java,我遇到了一个挑战,要制作一个web地址提取器。该程序什么也不做,只是浏览指定给它的页面以查找其中的外部链接。我有一个关于如何做到这一点的想法,但是我在实现sockets类时遇到了一些问题。我需要帮助的是,我需要做一个套接字,它将使用端口80连接到html页面。接下来,我需要将该页面的完整html放入套接字的输入流中,以便使用它进行操作以提取链接 总而言之,我需要澄清以下几点: 将页面的html放入套接字的输入流中。 在控制台上打印输入流。 编辑:对不起,我的错。将输出流与输入

我正在学习Java,我遇到了一个挑战,要制作一个web地址提取器。该程序什么也不做,只是浏览指定给它的页面以查找其中的外部链接。我有一个关于如何做到这一点的想法,但是我在实现sockets类时遇到了一些问题。我需要帮助的是,我需要做一个套接字,它将使用端口80连接到html页面。接下来,我需要将该页面的完整html放入套接字的输入流中,以便使用它进行操作以提取链接

总而言之,我需要澄清以下几点:

将页面的html放入套接字的输入流中。 在控制台上打印输入流。
编辑:对不起,我的错。将输出流与输入流混淆

查看答案以创建输出流。使用该类打印输出流。

使用套接字执行此操作时,请尝试使用UrlConnection类

    URL connection= new URL("http://lums.edu.pk);
    URLConnection yc = connection.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(
                                yc.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) 
        System.out.println(inputLine);
    in.close();

如果您尝试使用套接字,您需要了解什么是http协议以及使用该协议的服务器。最后,使用套接字发送GET请求。检查问题以了解其工作原理。

由于您不需要使用套接字,因此在本例中使用包含在Java中的库更容易,该库为您处理HTTP请求,只提供一个包含页面内容的简单流:

public class UrlExtractor {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.stackoverflow.com/");
        URLConnection conn = url.openConnection();
        InputStream in = conn.getInputStream();

        // read the page content (usually HTML) from in here

        in.close();
    }
}

您不需要OutputStream,而需要InputStream从套接字读取。顺便问一下,你到底有什么问题?看看HTTP协议是如何工作的。您连接到www.stackoverflow.com端口80,然后HTTP告诉您发送和接收什么。。。或者,如果您不必使用套接字,请使用URL和URLConnection。我知道如何使用UrlConnection类来实现这一点。这是为了学习的目的,我希望能够做到这一点,以及使用插座,因为我知道这是可能的。我将研究http是如何工作的。谢谢。你的解决方案是迄今为止最有用的。你能帮我更好地理解http协议吗?u共享的链接没有解释如何使用java在http协议中进行对话,或者说非常精确,这还不够详细。基本上,http是一个带有一些关键字的协议,您需要使用这些关键字来请求资源套接字是通过网络获取信息的非协议通道,基本上,您需要构建这样的请求,关于所有可能选项的详细解释,但最后您需要以服务器能够理解的方式进行讨论。别忘了选择我的答案。我知道如何使用UrlConnection类。但我也希望能够使用套接字来实现这一点,因为我确信这是可能的,我希望了解如何实现。因为你的答案似乎没有回答这个问题。问题是如何读取url并将其打印到屏幕上。在这篇文章中有两个问题都被提到了。我可以包括一个代码示例,但嘿,他明确表示这是为了学习。