2013-06-18 39 views
1

我爲了鍛鍊目的寫了一個非常簡單的Java http服務器。我用cURL測試它,一切似乎都正常,但是當我嘗試從瀏覽器發送請求時爲什麼我無法通過瀏覽器連接到本地主機上的http服務器?

http://localhost:6666/ 

服務器不響應。我甚至在服務器套接字接受連接時標記System.out.println(),當我嘗試通過瀏覽器訪問服務器時,連接似乎不會觸發。這個你能幫我嗎。 謝謝:)

編輯:代碼 部分:

public class Server { 

    private ServerSocket serverSocket; 
    private Socket socket; 
    public Server() { 
     try { 
      serverSocket = new ServerSocket(6666); 
      while (true) { 
       socket = serverSocket.accept(); 
       System.out.println("Whoop! Connection!"); 
       Request request = new Request(socket); 
       request.run(); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
      } 
    } 
} 

如果請求是爲了處理多個請求

+0

您可能需要發佈一些代碼。除此之外,也許你的瀏覽器代理設置。 – austin

+0

懷疑它會有所作爲,但你試過'127.0.0.1:6666'嗎? – Supericy

+0

嘗試127.0.0.1:6666 沒有影響 – user1990198

回答

1

擴展Thread類(我假設你正在使用完全相同在瀏覽器中使用相同的URL並使用curl ...)

如果瀏覽器運行在與服務不同的主機上,則原因是IP地址爲localhost(例如127.0.0.1)不會路由到除主機之外的任何其他主機。 (這就是「本地」意味着......)總之,這是正常的行爲。 (也許你正在運行curl,並在不同的主機上運行瀏覽器。)

如果瀏覽器與服務在同一主機上運行,​​這種行爲有點令人費解。但有一些可能的解釋:

  • 您的瀏覽器中可能有一些奇怪的網絡代理設置。例如,如果您將瀏覽器配置爲將所有http請求(包括127.0.0.1)發送到另一臺計算機上的HTTP代理,那麼當代理將請求轉發給真實機器時,它將轉到錯誤的地方。

  • localhost域名可能會綁定到一些奇怪的IP地址;例如除了127.x.x.x IP地址之外的其他內容。 (這是一件很奇怪的事情,但我聽說有人誤導了這件事。)

  • 127.0.0.1 IP地址可能已被綁定到其他迴環網絡適配器。 (我不知道這在技術上是否可行...)

  • 如果您使用iptables在虛擬網絡上實現路由,您可能會發送127.0.0.1數據包到錯誤的地方。 (我不知道這在技術上是否可行...)

第一個子彈看起來最有可能是我。

相關問題