c#

c#如何实现一个简单的webserver

小樊
81
2024-09-19 21:32:25
栏目: 编程语言

在C#中,你可以使用HttpListener类来实现一个简单的Web服务器。以下是一个基本的示例:

  1. 首先,确保你的项目中引用了System.Net.Http命名空间。
  2. 然后,创建一个新的HttpListener实例,并设置监听的端口。
  3. HttpListener添加请求处理程序。
  4. 开始监听,并处理收到的请求。
  5. 最后,停止监听。

以下是一个简单的Web服务器实现:

using System;
using System.Net;
using System.Net.Http;
using System.Threading;

namespace SimpleWebServer
{
    class Program
    {
        static void Main(string[] args)
        {
            // 设置监听的端口
            int port = 8080;
            Uri uri = new Uri($"http://localhost:{port}/");

            // 创建一个新的HttpListener实例
            HttpListener httpListener = new HttpListener();

            // 将URI添加到监听器
            httpListener.IgnoreSecurityMessages = true;
            httpListener.Request及时处理Callback = OnRequestReceived;
            httpListener.AddUri(uri);

            // 开始监听
            Console.WriteLine($"Starting server on {uri}");
            httpListener.Start();

            // 等待请求
            Console.WriteLine("Press 'Enter' to stop the server...");
            Console.ReadLine();

            // 停止监听
            httpListener.Stop();
            Console.WriteLine("Server stopped.");
        }

        static void OnRequestReceived(HttpListenerContext context)
        {
            // 获取请求的URI
            string requestUri = context.Request.Url.LocalPath;

            // 创建一个新的响应对象
            HttpResponse response = context.Response;

            // 设置响应的状态码和内容类型
            response.StatusCode = HttpStatusCode.OK;
            response.ContentType = "text/html";

            // 写入响应内容
            using (var writer = new System.IO.StreamWriter(response.OutputStream))
            {
                writer.WriteLine("<html><head><title>Simple Web Server</title></head>");
                writer.WriteLine("<body><h1>Hello, World!</h1></body>");
                writer.WriteLine("</html>");
            }

            // 关闭响应
            response.Close();
        }
    }
}

这个简单的Web服务器将监听8080端口,并在根目录下提供一个HTML页面。你可以根据需要修改OnRequestReceived方法来处理不同的请求和路径。

0
看了该问题的人还看了