用浏览器来接收C# 的程序返回的时间cool

/*
豆腐制作 都是精品
http://www.asp888.net 豆腐技术站
如转载 请保留版权信息
*/

今天早上 我写了一篇 用socket 做的 时间服务器,当时我说准备用一段时间作个不需要客户端接收数据

而是用 浏览器 接收数据的程序,很顺利,一天的时间 我就做好了:)

闲话不说,先看程序。。。

using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

class HttpProcessor
{
    private Socket s;
    private BufferedStream bs;
    private StreamReader sr;
    private StreamWriter sw;
    private String method;
    private String url;
    private String protocol;
    private Hashtable hashTable;

    public HttpProcessor(Socket s)
    {
        this.s = s;
        hashTable = new Hashtable();
    }

    public void process()
    {
        NetworkStream ns = new NetworkStream(s, FileAccess.ReadWrite);
        bs = new BufferedStream(ns);
        sr = new StreamReader(bs);
        sw = new StreamWriter(bs);
        writeURL();
        s.Shutdown(SocketShutdown.SdBoth);
        ns.Close();
    }
    
    public void writeURL()
    {
        try
        {
            writeSuccess();
        }
        catch (FileNotFoundException)
        {
            writeFailure();
            sw.WriteLine("File not found: " + url);
        }
        sw.Flush();
    }

    public void writeSuccess()
    {
        sw.WriteLine("HTTP/1.1 200 OK");
        sw.WriteLine("Server: Microsoft-IIS/5.0");
        sw.WriteLine("Date: Mon, 27 Nov 2000 08:19:43 GMT");
        sw.WriteLine("Content-Length: 6");
        sw.WriteLine("Content-Type: text/html");
        sw.WriteLine("");

        String strDateLine;
        DateTime now;
        now = DateTime.Now;
        strDateLine = now.ToShortDateString() + " " + now.ToLongTimeString();
        sw.WriteLine(strDateLine);
    }

    public void writeFailure()
    {
        sw.WriteLine("HTTP/1.0 404 File not found");
        sw.WriteLine("Connection: close");
        sw.WriteLine();
    }
}

public class HttpServer
{
    public HttpServer() : this(81)
    {
    }

    public HttpServer(int port)
    {
        this.port = port;
    }
    public void listen()
    {
        Socket listener = new Socket(0, SocketType.SockStream, ProtocolType.ProtTCP);
        IPAddress ipaddress = new IPAddress("169.254.0.244");
        IPEndPoint endpoint = new IPEndPoint(ipaddress, port);
        listener.Bind(endpoint);
        listener.Blocking = true;
        listener.Listen(-1);
        Console.WriteLine("Press Ctrl+c to Quit...");
        while (true)
        {
            Socket s = listener.Accept();
            HttpProcessor processor = new HttpProcessor(s);
            Thread thread = new Thread(new ThreadStart(processor.process));
            thread.Start();
        }
    }
    public static int Main(String[] args)
    {
        HttpServer httpServer;
        if (args.GetLength(0) > 0)
        {
            httpServer = new HttpServer(args[0].ToUInt16());
        }
        else
        {
            httpServer = new HttpServer();
        }
        Thread thread = new Thread(new ThreadStart(httpServer.listen));
        thread.Start();
        return 0;
    }
}
Contributors: FHL