2014-04-05 64 views
0
while(isRunning == true) { 
    if (SSocket != null) { 
     try { 
      Socket socket = SSocket.accept(); 

      PrintStream PStream = new PrintStream(socket.getOutputStream()); 
      BufferedReader BReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

      String info = null; 
      while ((info = BReader.readLine()) != null) { 
       System.out.println("now got " + info); 
       if (info.equals("")) { 
        break; 
       } 
      } 

      String content = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Main></Main>"; 
      PStream.println("HTTP/1.0 200 OK"); 
      PStream.println("Content-Type: text/xml"); 
      PStream.println("Content-Length: " + content.length()); 
      PStream.println(""); 
      PStream.println(content); 

      PStream.close(); 
      BReader.close(); 

      socket.close(); 

      Thread.sleep(10); 
     } catch (Exception e) { 

     } 
    } 
} 

此代碼使服務器顯示一個xml,但是當我轉到另一個頁面時(例如http://10.0.0.101:39878/otherpage.html),內容是相同的。如何更改每個頁面的內容並在不存在時輸入404?如何使用套接字在服務器上創建多個頁面?

回答

0

您必須解析客戶端的請求以找出正在請求哪個頁面,然後發送相應的內容。你顯示的代碼根本沒有進行任何解析。事實上,它甚至沒有閱讀客戶的全部要求,只是第一行,這是不夠的。您需要閱讀定義HTTP協議的RFC 2616。然後考慮不是手動實現HTTP服務器,而是使用預製庫來代替。有關建議,請參閱How to create a HTTP server in Android?

相關問題