JavaSocket編程(五)

字號:

簡單的WEB服務器
    一個簡單的WEB服務器將由列表9.2這樣構(gòu)建.當然,還必須要對方法和回應事件進行改進.簡單的服務器不會分析和存儲請求頭.新的WEB服務器將分析和存儲請求,為以后的處理作準備.為了達到這個目的,你必須有一個包含HTTP請求的類.
    HTTPrequest類
    列表9.5列出了一個完整的HTTPrequest類.這個類必須包括一個請求頭所需的所有信息.
    列表9.5.HTTPrequest類.
    import java.io.*;
    import java.util.*;
    import java.net.*;
    import NameValue;
    /**
    * 這個類有一個HTTP請求的所有信息
    */
    public class HTTPrequest
    {
    public String version;
    public String method;
    public String file;
    public Socket clientSocket;
    public DataInputStream inbound;
    public NameValue headerpairs[];
    /**
    * 建立一個這個類的實例
    */
    public HTTPrequest()
    {
    version = null;
    method = null;
    file = null;
    clientSocket = null;
    inbound = null;
    inbound = null;
    headerpairs = new NameValue[0];
    }
    /**
    * 加入一個名稱/值對到核心數(shù)組
    */
    public void addNameValue(String name, String value)
    {
    try
    {
    NameValue temp[] = new NameValue[ headerpairs.length + 1 ];
    System.arraycopy(headerpairs, 0, temp, 0, headerpairs.length);
    temp[ headerpairs.length ] = new NameValue(name, value);
    headerpairs = temp;
    }
    catch (NullPointerException npe)
    {
    System.out.println("NullPointerException while adding name-value:
    " + npe);
    }
    }
    /**
    * 以字符串的形式歸還這個類
    */
    public String toString()
    {
    String s = method + " " + file + " " + version + " ";
    for (int x = 0; x < headerpairs.length; x++ )
    s += headerpairs[x] + " ";
    return s;
    }
    }
    NameValue類簡單地存儲了兩個字符串:name 和 value.當一個新的對要被加入時,一個新的數(shù)組將被分配.新的數(shù)組接受了舊的數(shù)組和新的成員.舊的數(shù)組然后被一個新建的對象覆蓋了.