如何使用套接字在服务器上创建多个页面?

时间:2014-04-05 04:38:07

标签: android sockets http

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?

1 个答案:

答案 0 :(得分:0)

您必须解析客户端的请求以找出正在请求的页面,然后发送相应的内容。您展示的代码根本没有进行任何解析。实际上,它甚至没有读取客户端的完整请求,只是它的第一行,这是不够的。您需要阅读RFC 2616,它定义了HTTP协议。然后考虑不手动实现HTTP服务器,而是使用预制库。有关建议,请参阅How to create a HTTP server in Android?