2015-02-11 85 views
0

我正在學習Java,並且遇到了一個挑戰,使得Web地址提取器成爲現實。該程序不會做任何事情,只是掃描通過給它的頁面來查找外部鏈接。我有一個想法如何做到這一點,但我在實現套接字類時遇到了一些麻煩。我需要幫助的是我需要製作一個套接字,它將使用端口80連接到html頁面。接下來,我需要將該頁面的完整html嵌入到套接字的輸入流中,以便我可以使用它來提取鏈接。使用套接字讀取html並將其打印出來

綜上所述,澄清下面的事情是我需要的:

  1. 獲得頁面的HTML插入插座的輸入流。
  2. 將輸入流打印到控制檯上。

編輯:對不起,我的壞。混淆的輸出流與輸入流。

+0

您不需要OutputStream,只需要從套接字讀取InputStream。順便問一下你的確切問題是什麼? – mkrakhin 2015-02-11 08:59:06

+0

查看HTTP協議是如何工作的。您連接到www.stackoverflow.com端口80,然後HTTP告訴您要發送和接收的內容......或者,如果您不必使用套接字,請使用「URL」和「URLConnection」。 – immibis 2015-02-11 08:59:32

回答

-2

this答案創建一個OutputStream。使用PrintStream類打印OutputStream。

+0

爲什麼downvotes? – 2015-02-11 09:05:10

+0

因爲你的回答似乎沒有回答這個問題。 – immibis 2015-02-11 20:06:53

+0

那麼,問題是如何讀取一個網址,並將其打印到屏幕上。這篇文章中有兩個問題都涉及到。我可以包含代碼示例,但是,嘿,他明確表示它是用於學習的目的。 – 2015-02-11 20:27:46

0

你用套接字來做什麼嘗試使用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(); 

如果你嘗試用你需要什麼understan從使用服務器的HTTP協議和how you can retrieve data插座做。最後使用套接字發送一個GET請求。檢查this的問題,看看它是如何工作的。

+0

我需要使用套接字來做到這一點。我知道如何使用UrlConnection類來做到這一點。這是爲了學習目的,我希望能夠使用套接字來做到這一點,因爲我知道這是可能的。我將研究http的工作方式。謝謝。 – 2015-02-11 09:05:00

+0

Ur解決方案迄今爲止最有用。你能幫我更好地理解http協議嗎?你共享的鏈接並沒有解釋如何使用java在http協議中進行對話(或者非常精確),這不夠詳盡。 – 2015-02-11 09:16:42

+0

基本上http是一個協議,它有一些你需要用來請求資源的關鍵字,一個套接字是一個非協議通道,通過網絡獲取信息,基本上你需要建立一個像這樣的請求。 http://www.studytonight.com/servlet/images/get-request-method.jpg,關於所有可能的選項的非常大的解釋,但最後你需要以服務器理解的方式進行討論。不要忘記選擇我的答案。 – Koitoer 2015-02-11 17:57:41

-1

由於您不需要使用套接字,因此使用爲您處理HTTP請求的庫(在本例中,包含在Java中)更容易,並且只是爲您提供帶有頁面內容的普通數據流:

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(); 
    } 
} 
+0

我知道如何使用UrlConnection類完成它。但我希望能夠使用套接字來做到這一點,因爲我知道它的可能性,我想學習如何。 – 2015-02-11 09:05:55

相關問題