我花了一些时间来制作 Http Server,我决定使用TcpListener
class(在我使用之前HttpListener
)。问题是每个浏览器都给我一条消息:“连接被拒绝”。这很奇怪,因为浏览器通常会获取包含内容(在本例中:html 页面)和 200 代码的 http 标头。此外,我看到我的页面大约 0.5 秒然后消失。
WebServer ws = new WebServer(SendResponse, address);
Thread thread = new Thread(new ThreadStart(ws.Run));
thread.Start();
网络服务器类:
public void Run() {
_listener = new TcpListener(IPAddress.Any, 8080);
_listener.Start();
while(isRunning)
{
TcpClient client = _listener.AcceptTcpClient();
Thread thread = new Thread(() => Connection(client));
thread.Start();
Thread.Sleep(1);
}
}
public void Connection(TcpClient client)
{
NetworkStream stream = client.GetStream();
string response = "HTTP/1.0 200 OK\r\n"
+ "Content-Type: text/html\r\n"
+ "Connection: close\r\n"
+ "\r\n";
byte[] bytesResponse = Encoding.ASCII.GetBytes(response);
byte[] data = Encoding.ASCII.GetBytes("<!doctype html><html><body><h1>test server</h1></body></html>");
stream.Write(bytesResponse, 0, bytesResponse.Length);
stream.Write(data, 0, data.Length);
stream.Dispose();
}
我想这不是防火墙故障,因为另一个 C# 服务器,例如这个:https : //www.codeproject.com/Articles/137979/Simple-HTTP-Server-in-C就像一个魅力。怎么了?
我找到了我的问题的答案。标题Content-Length
丢失了:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句