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”
以上就是一个“推”技术的简单实现,将它扩展一下,比如加入多线程响应,就可以实现无刷新的聊天室,请读者自己考虑。