From: someuser@somehost.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0; DigExt)
空行
其中第一行是我們要關注的,它由空格分隔成三部分,一是請求的方法(get),二是請求的頁面,三是HTTP的版本。如果請求無誤,服務器將返回如下信息:
HTTP/1.0 200 OK
Date: Thu, 8 Oct 2002 14:23:11 GMT
Content-Type: text/html
Content-Length: 1644
<html>
<body>
<h1>Hello world!</h1>
(其他內容)...
</body>
</html>
第一行表示連接成果,然后是返回數據的屬性,從開始才是返回給瀏覽器返回的數據。在我們自己的程序中只需要按照上述格式寫數據,就可以實現一個自己的簡易web服務器。下面是一個hello,world的例子:
//myServer.java
import java.io.*;
import java.net.*;
public class myServer
{
static ServerSocket server=null;
static OutputStreamWriter ow=null;
public static void main(String args[])
{
int port=800;
try
{
server=new ServerSocket(port);
}catch(Exception e)
{
System.out.println(e);
}
while(true)
{
try
{
Socket socket=server.aclearcase/" target="_blank" >ccept();
ow=new OutputStreamWriter(socket.getOutputStream());
ow.write("HTTP/1.0 200 ok ");
ow.write("Content-Type:text/html ");
ow.write("");
ow.write("hello,world");
ow.write("");
ow.flush();
socket.close();
}catch(Exception e)
{
System.out.println(e);
}
}
}
}
編譯:javac myServer.java
運行:java myServer
然后打開瀏覽器,輸入http://localhost:800,將會返回一個”hello,world”
以上就是一個“推”技術的簡單實現,將它擴展一下,比如加入多線程響應,就可以實現無刷新的聊天室,請讀者自己考慮。
原文轉自:http://www.anti-gravitydesign.com