首页 > 编程语言 >c#编写一个简单的http服务器

c#编写一个简单的http服务器

时间:2024-06-12 17:44:22浏览次数:23  
标签:http c# listerner writer ctx System WriteLine using 服务器

C# 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            using (HttpListener listerner = new HttpListener())
            {
                listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问
                listerner.Prefixes.Add("http://localhost:8080/web/");
                listerner.Start();
                Console.WriteLine("WebServer Start Successed.......");
                while (true)
                {
                    //等待请求连接
                    //没有请求则GetContext处于阻塞状态
                    HttpListenerContext ctx = listerner.GetContext();
                    ctx.Response.StatusCode = 200;//设置返回给客服端http状态代码
                    string name = ctx.Request.QueryString["name"];

                    if (name != null)
                    {
                        Console.WriteLine(name);
                    }


                    //使用Writer输出http响应代码
                    using (StreamWriter writer = new StreamWriter(ctx.Response.OutputStream))
                    {
                        Console.WriteLine("hello");
                        writer.WriteLine("<html><head><title>The WebServer Test</title></head><body>");
                        writer.WriteLine("<div style=\"height:20px;color:blue;text-align:center;\"><p> hello {0}</p></div>", name);
                        writer.WriteLine("<ul>");

                        foreach (string header in ctx.Request.Headers.Keys)
                        {
                            writer.WriteLine("<li><b>{0}:</b>{1}</li>", header, ctx.Request.Headers[header]);

                        }
                        writer.WriteLine("</ul>");
                        writer.WriteLine("</body></html>");

                        writer.Close();
                        ctx.Response.Close();
                    }

                }
                listerner.Stop();
            }
        }



    }
}

 C#搭建简单的http服务器,访问静态资源
参考:https://www.cnblogs.com/feigao/p/14759057.html

标签:http,c#,listerner,writer,ctx,System,WriteLine,using,服务器
From: https://www.cnblogs.com/microsoft-zh/p/18244407

相关文章

  • VSCode安装使用教程,保姆级!
    前言VisualStudioCode(简称VSCode)是一款由微软开发的免费、开源的轻量级代码编辑器,它支持多种编程语言和平台,并提供丰富的扩展功能,让开发者能够更高效地编写代码。本文将向您介绍如何安装和使用VSCode,以及一些常用的功能和技巧。VSCode下载、安装我们可以直接在官网下载......
  • Hungry Hungry Hippos Towards Language Modeling with State Space Models
    目录概H3代码FuD.Y.,DaoT.,SaabK.K.,ThomasA.W.,RudraA.andReC.Hungryhungryhippos:towardslanguagemodelingwithstatespacemodels.2022.概Mamba系列第五作:H3.H3感觉H3是之前的linearattention和SSM的一个结合,它所做的只是把line......
  • typescript Omit Required Pick Partial等常用工具类型使用
    示例代码interfacemybasic{one:string,two:string,three:number,four:string}console.log("myts-demo")//排除参数属性interfacemy1extendsOmit<mybasic,'one'>{}typemytype=keyofmy1;typemytype2=my1;//......
  • 202406-如何使用新版本的rclone在服务器上挂载onedrive e5
    前情提要:这位老哥里面写的教程,因为rclone更新了所以有点不一样了,仅作记录在本地(带浏览器)操作Noremotesfound,makeanewone?n)Newremotes)Setconfigurationpasswordq)Quitconfign/s/q>nEnternamefornewremote.name>odOptionStorage.Typeofstorage......
  • python-爬虫-获取浏览器的cookies
    1、封装浏览器对象#-*-coding:utf-8-*-"""封装类将获取浏览器的对象封装成一个类调用方法:1、importGet_Browser2、driver=Get_Browser.Get_Browsers().get_browser()"""fromseleniumimportwebdriverclassGet_Browsers:def__init__(self......
  • (nice!!!)LeetCode 2865. 美丽塔 I(数组、单调栈)
    2865.美丽塔I思路:方法一,时间复杂度0(n^2)。枚举每一个点i作为当前山脉数组的最高点。然后我们通过预处理遍历其前面和后面,来更新两个数组f1、f2。数组f1[i]:表示在满足非递减的情况下,区间0~i,以点i的高度heighs[i]为最高点所能形成的最大高度和。数组f2[i]:表示在满足非......
  • React常见面试题(2024最新版)
    创建项目npxcreate-react-appmy-app启动项目npmstart目录结构目录/文件名描述README.md项目的自述文件node_modules/项目依赖包存放目录package.json包管理配置文件,记录项目信息和依赖package-lock.json锁定依赖版本,确保跨环境一致性pub......
  • 使用foreach和stream遍历并修改List列表
    使用foreach和stream遍历并修改List列表1.使用foreachimportjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors;publicclassTestList{publicstaticvoidmain(String[]args......
  • 在ubuntu22.04下安装cursor
    在ubuntu22.04下安装cursor安装Cursor编程软件1.访问Cursor网站下载Linux版本的AppImage文件2.如果出现“dlopen():errorloadinglibfuse.so.2”错误,需要安装fuse。3.将Cursor添加到应用程序列表4.保存.desktop文件,Cursor就会出现在应用程序列表中。5.如果出现点击curs......
  • python系列:python fastapi + uvicorn 记录日志的最佳实践,结合nb_log
    pythonfastapi+uvicorn记录日志的最佳实践,结合nb_logpythonfastapi+uvicorn记录日志的最佳实践,结合nb_logpythonfastapi+uvicorn记录日志的最佳实践,结合nb_logpythonfastapi+uvicorn记录日志的最佳实践,要记录对fastapi什么时候请求了什么url和入......