C# 开发一个简单的HTTP服务器及命令行解释器

C#在IoT通信协议开发中的3大优势:为何它比Python/Java更适合? 摘要: C#凭借.NET Core的跨平台能力(支持Linux/嵌入式设备)、丰富协议库(MQTTNet/CoAP)及内置安全机制,成为IoT通信协议开发的首选。对比Python和Java,C#在性能(异步编程)、实时性(响应快3倍)及部署效率上优势显著,尤其适合智能家居(MQTT)、工业物联网(边缘计算)等场景。未来结合AI与5G,C#将持续领跑IoT通信开发。 阅读详情


有时在做命令行程序或form程序时,会为事件的触发,考虑相应的机制,例如如果是外部条件触发时,可以有两种方式触发

1、通过TCP或UDP方式(优点是可以双工通信)

2、在服务器通过构建一个HTTP简单的服务器实现


以下简单的写下通过C#构建一个HTTP服务器,做简单的命令解析,以及开启另外一个线程,监听用户的键盘输入:


 class Program
    { 



        static void Main(string[] args)
        {


            Init();


            //启动HTTP线程服务器,用于接受HTTP的请求,并做出相应的操作;

            Thread httpThread = new Thread(new HttpListenerUtil().HTTP服务器监听);

            httpThread.Start();

            

            Thread ListenerCommInput = new Thread(ReadInputComand);

            ListenerCommInput.Start();



            //查询mongoDB里的数据();

            //DataMoveClass.迁移地区数据();

            //DataMoveClass.迁移统计表数据();

            //DataMoveClass.数据迁移();

        }




        private static void Init()
        {
            Console.WriteLine("准备迁移数据至mongodb数据库中!");
            Console.WriteLine("初始化连接aic数据库 及 mongodb数据库!");
        }

     

        /// <summary>
        /// 监听命令行的输入操作!并做出相应的反馈
        /// </summary>
        public static void ReadInputComand()
        {
            Console.WriteLine("读取命令行输入:(输入help查看命令参数!)");


            while (true)
            {


                string read = Console.ReadLine();


                if (read == "help")

                {

                    Console.WriteLine("\nhelp:\t 帮助命令");

                    Console.WriteLine("start count:\t 更新统计表");

                    Console.WriteLine("start region:\t 更新区域表");

                    Console.WriteLine("start cominfo:\t 更新企业信息表");

                    Console.WriteLine("quit:\t 退出系统");

                    Console.WriteLine("显示命令行帮助\n");

                }

                else if (read == "start count")

                {

                    Console.WriteLine("准备更新统计表!");

                    DataMoveClass.迁移统计表数据();

                }

                else if (read == "quit")

                {

                    Console.WriteLine("退出系统!");

                    Thread.Sleep(5000);

                    Environment.Exit(0);

                    return;

                }

                else if (read=="start region")

                {                    

                    Console.WriteLine("准备更新地区表!");

                    DataMoveClass.迁移地区数据();

                }

                else if (read == "start cominfo")

                {                    

                    Console.WriteLine("准备更新企业表!");

                    DataMoveClass.数据迁移();

                }

                else 

                {

                    Console.WriteLine("不识别的命令!\n输入 help查看帮助\n");

                }



            }



        }




        /// <summary>
        /// 服务器监听方法;
        /// </summary>
        public void HTTP服务器监听()
        {
            HttpListener httpListener = new HttpListener();


            httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
            httpListener.Prefixes.Add( getDevice("region"));
            httpListener.Prefixes.Add( getDevice("count"));
            httpListener.Prefixes.Add( getDevice("cominfo"));//该接口用户查询设备状态 




           
            try
            {
                httpListener.Start();
            }
            catch (Exception e)
            {


                Console.WriteLine("开启http服务器失败,检查配置文件IP与本机IP是否一致:" + e.Message);
                return;
            }


             
            Console.WriteLine("HTTP服务器开始运行......");
            while (true)
            { 
                HttpListenerContext ctx = httpListener.GetContext();
                ctx.Response.StatusCode = 200;//设置返回给客服端http状态代码
                // string name = ctx.Request.QueryString["mumuid"];


                 
                StreamWriter writer = new StreamWriter(ctx.Response.OutputStream);


                string resString = "";
                try
                {
                    resString=处理分析HTTP请求的详细列表(ctx);
                }
                catch (Exception ep)
                {


                    resString = ep.Message;
                } 
                 
                writer.WriteLine(resString);
                writer.Close();
                ctx.Response.Close(); 


            }


          //  httpListener.Stop();
        }
         


}



最终的效果如下:


Unity游戏接入大语言模型:新手友好的HTTP API调用方案 大语言模型(LLM)作为当前人工智能领域的热点技术,通过海量数据训练获得强大的自然语言理解和生成能力。其核心原理基于Transformer架构,通过自注意力机制处理序列数据,实现上下文感知的文本生成。在工程实践中,LLM的价值在于为各类应用注入智能交互能力,尤其适用于需要动态内容生成的场景。对于Unity开发者而言,通过HTTP API调用云端LLM服务是一种轻量级、跨平台的解决方案,无需本地部署复杂环境,即可为游戏NPC赋予智能对话能力。本文以DeepSeek等主流平台为例,详细讲解如何在Unity中通过 阅读详情

相关推荐

用C#编写一个简单的HTTP服务器

如果文件存在,我们读取文件的内容,并构建一个带有200 OK状态码的响应,其中包含文件内容。首先,在构造函数中,我们接收根目录和端口号作为参数,并将它们存储在成员变量中。然后,我们定义了一个私有的TcpListener对象,用于监听传入的连接。方法用于处理请求并生成响应。然后,我们进入一个无限循环,接受传入的客户端连接,并将每个客户端连接传递给。如果文件存在,我们读取文件的内容,并构建一个200 OK的响应,其中包含文件内容。然后,我们进入一个无限循环,接受传入的客户端连接,并将每个客户端连接传递给。

TzData的博客 875

C#开发轻量级 高性能HTTP服务器

转自:源之缘cnblogs.com/yuanchenhui/p/httpserver.html前言http协议是互联网上使用最广泛的通讯协议了。Web通讯也是基于http协议;对应c#开发者来说ASP.NET Core是最新的开发Web应用平台。由于最近要开发一套人脸识别系统,对通讯效率的要求很高。虽然.NET Core对http处理很优化了,但是我决定开发一个轻量级http服务器;不求功能多强...

weixin_68436326的博客 5324

C# 实现HTTP服务器 (附完整源码)

C# 实现HTTP服务器 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1331

【C#】一个简单的http服务器项目开发过程详解

使用C#开发一个跨平台的简易HTTP服务器,这里创建一个控制台项目,获取本机IP并启用HTTP服务,解决访问权限问题后,实现请求处理和响应逻辑。重点讲解了如何加载网页文件、处理GET/POST请求以及返回不同类型的内容(HTML/JSON等)。该方法相比Node.js更轻量,可免安装运行,适合开发便携式应用。文章详细展示了从项目创建到服务器搭建的完整步骤,包括代码实现和常见问题解决方案。

2735

利用C#编程语言实现一个简单的HTTP服务器

在这篇文章中,我们将使用C#编程语言来创建一个简单的HTTP服务器,它可以接收来自客户端的HTTP请求并返回相应的响应。在上面的代码中,我们创建了一个简单的HTML页面作为响应字符串。然后,我们将响应字符串转换为字节数组,并设置响应的内容长度和类型。这只是一个简单的示例,你可以根据自己的需求来扩展和改进这个HTTP服务器。的方法,它用于处理HTTP请求。在该方法中,我们获取请求的URL和方法,并根据不同的URL和方法返回相应的响应。接下来,我们需要添加一些命名空间,这些命名空间包含了我们所需的类和方法。

AhTf__的博客 1590

C# WinForm网络爬虫开发实战:从零构建桌面信息采集工具

网络爬虫作为自动化数据采集的核心技术,其原理是通过模拟浏览器行为向目标服务器发送HTTP请求,获取并解析HTML等格式的响应数据,从而高效提取结构化信息。这项技术在数据挖掘、市场分析、舆情监控等领域具有重要价值,能够将分散的网络信息转化为可用的数据资产。本文聚焦于C# WinForm框架,详细阐述了如何利用HttpClient进行网络请求、通过HtmlAgilityPack解析HTML文档,并实现多线程异步处理,最终构建出一个稳定、易用的桌面端爬虫应用。通过结合WinForm的图形界面优势,该方案特别适合开

weixin_30402231的博客 555

整理PHP、Python、C#、Go这些开发语言在运行环境、Web开发框架、Gui开发框架上的对比,方便对照学习

整理PHP、Python、C#、Go这些开发语言在运行环境、Web开发框架、Gui开发框架上的对比,方便对照学习。

数字化管理师 1292

基于C#实现一个最简单的HTTP服务器实例

主要介绍了基于C#实现一个最简单的HTTP服务器的方法,详细分析了http服务器的实现原理与相关技巧,以及对应的注意事项,需要的朋友可以参考下

用C写一个web服务器(四) CGI协议

前言 时隔一个多月,终于又有时间来更新我的服务器了,这次更新主要实现一下 CGI 协议。 先放上GitHub链接 tinyServer-GitHub-枕边书 作为一个服务器,基本要求是能受理请求,提取信息并将消息分发给 CGI 解释器,再将解释器响应的消息包装后返回客户端。在这个过程中,除了和客户端 socket 之间的交互,还要牵扯到第三个实体 - 请求解释器。 如上图所...

weixin_30827565的博客 145

基于matlab版本的三维直流电法反演算法

可以使用RESINVM3D工具包等现成的MATLAB工具进行三维直流电法反演。反演问题求解:基于MATLAB的反演问题求解算法实现和应用,包括反演问题数值模拟、反演问题参数优化和反演问题结果分析。希望这个代码示例能帮助你入门三维直流电法反演。如果有更具体的需求或问题,可以进一步探讨。反演过程中可能需要调整正则化参数和优化算法的设置。需要根据实际问题实现,可能涉及复杂的数值计算。

ytttr873的博客 668

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

冲击10w 1万+

YOLOFuse在C#项目中调用可能吗?跨语言接口实现路径

面对Python AI模型与C#工业系统的集成难题,通过将YOLOFuse封装为HTTP服务,利用REST API实现跨语言调用,既规避了运行时冲突,又保障了系统的稳定性与可维护性。该方案已在多个实际场景中验证,支持高效、安全的多模态目标检测集成。

weixin_36212459的博客 570

PDF批量加水印 与 去除水印实践

我们可以给PDF加图片水印或文字水印,要去除图片水印,一般只需要删除最后一个图片对象即可。要去除文字水印,需要保证主体内容和文字水印在/Contents中位于不同的对象内,这样我们只需要删除文字水印对应的对象即可删除水印。而对于主体内容和文字水印已经混合在一个对象时,本文的提供的方法则无能为力,需要进一步深入分析PDF细节。

小小明-代码实体的专栏 2762

初级代码游戏的专栏介绍与文章目录

专栏介绍与文章目录

编程之道在明明德在亲民在止于至善 3942

紫光同创FPGA中ADF网表文件的黑匣子封装与PDS环境实战指南

本文详细介绍了在紫光同创FPGA开发环境中使用ADF网表文件进行黑匣子封装的实战指南。通过PDS环境配置、加密ADF生成、黑匣子集成及验证调试等步骤,帮助开发者实现核心IP保护,同时保持设计性能。特别适用于需要模块级代码保护的企业级FPGA开发场景。

weixin_33725239的博客 341

Dify 第 4 篇 Dify 示例:数据库执行Agent

本文介绍了如何在Dify平台创建一个能够执行SQL查询的数据库Agent。通过安装并配置"通义千问"和"数据库"两个插件,实现自然语言到SQL语句的转换和执行。关键步骤包括:1)安装插件并配置API Key;2)设置默认数据库连接(建议使用只读账号);3)准备测试数据表结构。该Agent支持通过工具调用查询表结构、转换自然语言为SQL、执行查询并返回结果,同时提供了CSV查询和HTTP API接口功能。文中还提供了MySQL测试数据表的创建脚本和示例数据。

甘蓝的专栏 1158

SOONet模型在.NET技术栈中的调用实践:为C#开发者铺路

本文介绍了如何在星图GPU平台上自动化部署SOONet: 基于自然语言输入的长视频片段时序定位模型,为C#开发者提供集成方案。该模型能够根据文本描述,在长视频中快速定位并剪辑出相关片段,可广泛应用于视频内容检索、智能剪辑及素材管理等场景,显著提升视频处理效率。

weixin_42348783的博客 22

DRM遇到的实际问题及领悟(3)

DRM遇到的实际问题及领悟(3)

phmatthaus的专栏 638

多语言编程深度探索从Java、C到Python、PHP、C#、C++的跨平台开发实战

从Java的虚拟机抽象到C/C++的源码级可移植,从Python的解释器兼容到现代.NET的全面跨平台,每一种语言都在以自己的方式解决跨平台开发的挑战。成功的跨平台实战不在于追求某种“万能”的语言,而在于深刻理解各语言的优势与局限,并根据项目目标设计合理的架构。无论是选择单一语言的纯粹方案,还是采用多语言协同的混合策略,核心都在于通过抽象和封装来隔离平台差异,确保业务逻辑的稳定与复用。

fanglei10的专栏 613

古风仙侠少女三视图提示词,一键生成角色设定

3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。平视正交视角,统一光照,纯白背景,无文字无水印,避免强透视和动态变形。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。少女,古风仙侠少女气质,灵动、温婉、仙气。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1069

【RK3399 Ubuntu】基于rk3399的lxde的lubuntu桌面移植适配记录之第二步:最基本Ubuntu根文件系统的相关常用工具完善

文章目录1.使能系统网络管理服务1.1 安装驱动modules管理工具1.2 使能网络服务2.终端自动补全命令功能3.安装ssh服务4.安装系统信息查看工具5.安装resize工具6.安装lrzsz工具7.使能rc.local服务7.1 修改服务Install块7.2 使能rc.local.service服务7.3 添加执行脚本且赋予执行权限 续接上文,本文主要完善前面已经制作好的rootfs 1.使能系统网络管理服务 1.1 安装驱动modules管理工具 apt-get install kmod 1.

wang 恒 的博客 1387

[C# 网络编程系列]专题四:自定义Web浏览器

[C# 网络编程系列]专题四:自定义Web浏览器 前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发出请求的正是本专题要介绍的Web浏览器,本专题通过简单自定义一个Web浏览器来简单介绍浏览器的工作原理,以及帮助一些初学者揭开浏览器这层神秘的面纱(以前总感觉这些应用感觉很深奥的,没想到自己也可以自定义一个浏览器出来),下面不啰嗦了...

fgmah2000的博客 137

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于VC++与MFC构建高性能Windows Web服务器:从Socket到HTTP协议的底层实践

网络编程是构建分布式系统的核心技术,其底层依赖于Socket通信机制实现不同主机间的数据交换。在Windows平台上,WinSock API提供了原生的Socket编程接口,而MFC(Microsoft Foundation Classes)框架则能高效封装网络事件与界面交互,实现高可控性的桌面应用程序。通过直接操作WinSock,开发者可以精细控制线程、内存与连接管理,这对于追求极致性能与稳定性的场景(如工业控制、嵌入式设备)具有重要价值。例如,在资源受限的Windows工控机环境中,一个静态链接、无需额

weixin_34161032的博客 861

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[C# 网络编程自定义Web浏览器

前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发出请求的正是本专题要介绍的Web浏览器,本专题通过简单自定义一个Web浏览器来简单介绍浏览器的工作原理,以及帮助一些初学者揭开浏览器这层神秘的面纱(以前总感觉这些应用感觉很深奥的,没想到自己也可以自定义一个浏览器出来),下面不啰嗦了,进入正题。 一、Web浏览器的介绍 Web浏览器是指可以显示Web服务器或者本地文

wangyizhi58的专栏 861

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C#调用Python大模型?ms-swift跨语言部署教程上线

通过ms-swift框架,C#应用可高效调用Python侧的大模型能力。借助HTTP API桥接,实现跨语言、跨平台的稳定集成,无需深入Python生态即可在.NET环境中使用Qwen、LLaMA等主流模型,适用于智能办公、代码辅助、多模态处理等场景。

weixin_35189483的博客 886

C语言可以开发哪些项目?

C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中……,这些迷茫也导致了我们在学习的过程中不知道如何学、学什么,所以,总结这个列表,希望对C语言初学者可以有所帮助~ C语言可以做什么? 从最简单的、最熟悉的说起吧,毕竟我们在学校学习的时候,老师几乎都会让我们去开发: 一、C语言...

alss13237的博客 2491
上一篇: C# 摘录自MSDN。 DataGridView初始值 !
下一篇: centos 下安装iptraf流量监控软件
ufocode
博客等级 码龄23年 36粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值