簡體   English   中英

C#簡單HTTP服務器未將響應發送到瀏覽器

[英]C# Simple HTTP Server not sending response to browser

System.Net.Sockets.TcpListener server = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Loopback, 8080);
server.Start();
Console.WriteLine("Servidor TCP iniciado");
Console.WriteLine("Aguardando conexao de um cliente...");
TcpClient client = server.AcceptTcpClient();

Console.WriteLine("Um cliente conectou-se ao servidor");

System.IO.StreamWriter writer = new System.IO.StreamWriter(client.GetStream());
writer.Write("HTTP/1.0 200 OK\r\nContent-Type: text/plain; charset=UTF-8\r\n\r\nGoodbye, World!\r\n");
writer.Flush();


Console.WriteLine("Desligando servidor");
server.Stop();
Console.ReadKey();

當我打開瀏覽器並嘗試訪問URL http:// localhost:8080時 ,出現ERR_CONNECTION_RESET錯誤。 我究竟做錯了什么?

問題是您的HTTP數據包不正確,它不包含Content-Length,因此瀏覽器不知道讀取什么。 嘗試以下代碼:

TcpListener server = new TcpListener(System.Net.IPAddress.Loopback, 8080);
server.Start();
Console.WriteLine("Wait for clients");
TcpClient client = server.AcceptTcpClient();

Console.WriteLine("Writing content");
string content = "Goodbye World!";

System.IO.StreamWriter writer = new System.IO.StreamWriter(client.GetStream());
writer.Write("HTTP/1.0 200 OK");
writer.Write(Environment.NewLine);
writer.Write("Content-Type: text/plain; charset=UTF-8");
writer.Write(Environment.NewLine);
writer.Write("Content-Length: "+ content.Length);
writer.Write(Environment.NewLine);
writer.Write(Environment.NewLine);
writer.Write(content);
writer.Flush();

Console.WriteLine("Disconnecting");
client.Close();
server.Stop();
Console.ReadKey();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM