public
class
MyHttpServer : HttpServer {
public
MyHttpServer(
int
port)
:
base
(port)
{
}
public
override
void
handleGETRequest(HttpProcessor p) {
Console.WriteLine(
"request:
{0}"
,
p.http_url);
p.writeSuccess();
p.outputStream.WriteLine(
"<html><body><h1>test
server</h1>"
);
p.outputStream.WriteLine(
"Current
Time: "
+ DateTime.Now.ToString());
p.outputStream.WriteLine(
"url
: {0}"
,
p.http_url);
p.outputStream.WriteLine(
"<form
method=post action=/form>"
);
p.outputStream.WriteLine(
"<input
type=text name=foo value=foovalue>"
);
p.outputStream.WriteLine(
"<input
type=submit name=bar value=barvalue>"
);
p.outputStream.WriteLine(
"</form>"
);
}
public
override
void
handlePOSTRequest(HttpProcessor p, StreamReader inputData) {
Console.WriteLine(
"POST
request: {0}"
,
p.http_url);
string
data
= inputData.ReadToEnd();
p.outputStream.WriteLine(
"<html><body><h1>test
server</h1>"
);
p.outputStream.WriteLine(
"<a
href=/test>return</a><p>"
);
p.outputStream.WriteLine(
"postbody:
<pre>{0}</pre>"
,
data);
}
}
public
abstract
class
HttpServer {
protected
int
port;
TcpListener
listener;
bool
is_active
=
true
;
public
HttpServer(
int
port)
{
this
.port
= port;
}
public
void
listen() {
listener
=
new
TcpListener(port);
listener.Start();
while
(is_active)
{
TcpClient
s = listener.AcceptTcpClient();
HttpProcessor
processor =
new
HttpProcessor(s,
this
);
Thread
thread =
new
Thread(
new
ThreadStart(processor.process));
thread.Start();
Thread.Sleep(1);
}
}
public
abstract
void
handleGETRequest(HttpProcessor p);
public
abstract
void
handlePOSTRequest(HttpProcessor p, StreamReader inputData);
}
HttpServer
httpServer =
new
MyHttpServer(8080);
Thread
thread =
new
Thread(
new
ThreadStart(httpServer.listen));
thread.Start();