2011-08-08 65 views
1

我用java寫了一個簡單的服務器,它只是將html文件的html代碼發送給任何連接到它的客戶端。它使用端口8008.問題是,當我使用chrome通過http://localhost:8008獲取此html時,它似乎不起作用。我應該怎麼做才能讓這兩者正確通信並讓瀏覽器呈現html頁面。我正在使用ServerSockets。另外,Web瀏覽器如何向服務器發送信息或請求?任何使用網址的方法?謝謝!用java編寫的瀏覽器和服務器之間的通信

ServerSocket serverSocket = null; 
    try { 
     serverSocket = new ServerSocket(8008); 
    } catch (IOException e) { 
     System.err.println("Could not listen on port: 8008."); 
     System.exit(1); 
    } 

    Socket clientSocket = null;; 
    try { 
     clientSocket = serverSocket.accept(); //This is the browser requesting for connection 
    } catch (IOException e) { 
     System.err.println("Accept failed."); 
     System.exit(1); 
    } 

    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); 
    BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

    out.println("Some HTML Code"); //The browser should be able to render the HTML Code sent 

    out.close(); 
    in.close(); 
    clientSocket.close(); 
    serverSocket.close(); 
+1

無代碼?你如何期望我們提供幫助? – SJuan76

+0

我已發佈代碼 – Ram

回答

2
The server you've developed is **not a web server**, right? The server you've developed **cannot handle HTTP requests**(used Sockets), but unfortunately the 

瀏覽器將使用協議(比如,HTTP)通過網絡

訪問文件。

您期待通過錯誤的過程得到的結果。我會說開發一個客戶端Java程序,它應該連接到你在初始化時提到的端口。

+0

這就是我先做的。但我們需要使用localhost:port方式。無論如何,使用serversockets的java服務器可以以瀏覽器可以讀取的格式輸出數據嗎? – Ram

+0

將HTML生成到HTTP服務器的'www'目錄(如Apache HTTP服務器),以便您可以在Web瀏覽器中獲取HTML ... – Venkat

0

嘗試使用TCPMON檢查請求和響應,應該幫助您縮小故障排除的範圍。

+0

您可以在[這裏](http://code.google.com/p/tcpmon/) – sudmong

0

HTTP不僅僅是HTML,還包含一些標題,例如,

HTTP/1.0 200 

必須由服務器傳輸。

檢查:

一)服務器正在有效地接收到請求(日誌服務器正在運行,並且應答)

b)在你所回覆的信息是有效的HTTP消息的瀏覽器將接受(HTTP是一種連接協議,而HTML是一種內容協議,您可以通過HTTP發送HTML或GIF圖像)。

在Google上查找HTTP消息格式

相關問題