易截截图软件、单文件、免安装、纯绿色、仅160KB

用java实现的一个简单web服务器程序

一、首先来看一下http的报文结构
1、请求报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。
(1)请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。
GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。
POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据。
(2)请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
(3)空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
(4)请求数据
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
2、响应报文
响应报文的格式大体上和请求报文类似,只是第一行有所不同,读者可以自己在网上查找这方面的介绍,这里不再赘述。
二、程序的实现
程序的实现步骤如下:
1、接收客户端浏览器的请求;
2、创建一个新的线程,用于处理该次请求;
3、读取报文数据,判断报文正确与否,分析报文内容;
4、创建响应报文,发送到客户端;
5、结束该处理线程,处理其他客户请求;
程序代码如下:
import java.net.*;
import java.io.*;
import java.util.*;
import java.lang.*;
public class WebServer {
public static void main(String [] args){
int port;
ServerSocket server_socket;
try{
port=Integer.parseInt(args[0]);
}
catch (Exception e){


相关文档:

java入门

 Java学习从入门到精通 
一、 JDK (Java Development Kit) 
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......

Java实现链表

class Link
{
private Node head;
public Link(Node head)
{
this.head=head;
}
public void addNode(Node node)
{
Node p=head;
while(true)
{
if(!p.hasNext())
{
p.setNext(node);
break;
}
p=p.getNext();
}
}
//插入节
public void insertNode(Node p,Node q)
{
q.setNext(p.getNext());
p.se ......

Effective Java: Item 1

Static Factory Methods
Four Advantages:
1) have names
2) not required to create a new object each time they are invoked
3) return an object of any subtype of their return type
4) reduce the verbosity of creating parameterized type instances.(for example: newInstance() method) ......

Java 和 C#的比较

 Java 和 C#的比较
1。访问控制方面:C#有public、internal、protected、private,比java多了个internal,其实它跟java的包访问差不多,internal表示同一个编译集合(如exe、dll)下的类可以互访。
对于protected,java和C#有区别。在java中,protected和包访问级别差不多,即不是私有的。而在C#中,protected和priv ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号