首页 > 其他分享 >《http篇》通过HttpListener实现http服务

《http篇》通过HttpListener实现http服务

时间:2023-08-02 11:55:07浏览次数:46  
标签:服务 http listener 侦听器 HttpListener HTTP 客户端

简单http服务

如果想实现更高级http服务,可以看下述目录

参考链接:https://blog.csdn.net/qq_36702996/article/details/78892380

HttpListener提供一个简单的、可通过编程方式控制的 HTTP 协议侦听器。通过它可以很容易的提供一些Http服务,而无需启动IIS这类大型服务程序。

注意:该类仅在运行 Windows XP SP2 或 Windows Server 2003 操作系统的计算机上可用。

使用Http服务一般步骤如下:

  1. 创建一个HTTP侦听器对象并初始化。
  2. 添加需要监听的URI前缀
  3. 开始侦听来自客户端的请求
  4. 处理客户端的请求
  5. 关闭HTTP侦听器

其中3,4两步可以循环处理,以提供多客户多次请求的服务。

创建一个HTTP侦听器对象

详细介绍:

1、创建HTTP侦听器对象只需要新建一个HttpListener对象即可。

HttpListener listener = new HttpListener();

2、初始化需要经过一下两步

// 添加需要监听的URL范围至listener.Prefixes中,可以通过如下函数实现:
listener.Prefixes.Add(prefix)
// 调用listener.Start()实现端口绑定,并开始监听客户端的请求

3、接收HTTP请求

在.net2.0中,通过HttpListenerContext对象提供对HttpListener类使用的请求和响应对象的访问。

获取HttpListenerContext的最简单方式如下:

HttpListenerContext context = listener.GetContext();

该方法将阻塞调用函数至接收一个客户端请求为止,如果要提高响应速度,可使用异步方法

listener.BeginGetContext()

来实现HttpListenerContext对象的获取。

4、处理HTTP请求

获取HttpListenerContext后,可通过Request属性获取表示客户端请求的对象,通过Response属性取表示 HttpListener 将要发送到客户端的响应的对象。

HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;

这里的HttpListenerRequest对象和HttpListenerResponse对象和Asp中的Request和Response的使用方式类似,这里就不多说了,具体使用看下面例子

5、关闭HTTP侦听器

通过调用listener.Stop()函数即可关闭侦听器,并释放相关资源

代码示例:

using System;
using System.Collections.Generic;
using System.Text;

using System.Net;

namespace ConsoleApplication1
{
	class Program
	{
		static void Main(string[] args)
		{
			HttpListener listener = new HttpListener();
			listener.Prefixes.Add("http://localhost/"); //添加需要监听的url范围
			listener.Start(); //开始监听端口,接收客户端请求
			Console.WriteLine("Listening...");

			//阻塞主函数至接收到一个客户端请求为止
			HttpListenerContext context = listener.GetContext();
			HttpListenerRequest request = context.Request;
			HttpListenerResponse response = context.Response;

			string responseString = string.Format("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now);
			byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
			//对客户端输出相应信息.
			response.ContentLength64 = buffer.Length;
			System.IO.Stream output = response.OutputStream;
			output.Write(buffer, 0, buffer.Length);
			//关闭输出流,释放相应资源
			output.Close();

			listener.Stop(); //关闭HttpListener
		}
	}
}

该程序功能比较简单,首先创建了一个HTTP侦听器,使其实现对 "http://localhost/time/" 域的服务,接收到一个远程请求时,将当前时间转换为字符串输出给客户端,然后关闭侦听器。

报错System.Net.HttpListenerException拒绝访问

参考链接:https://blog.csdn.net/m0_37611330/article/details/125759529

只需要将生成的exe设置成管理员身份运行,往后就不会再报错了

标签:服务,http,listener,侦听器,HttpListener,HTTP,客户端
From: https://www.cnblogs.com/fusio/p/17600301.html

相关文章

  • 案例|会展大数据服务系统 智能服务体系建设实践
    根据相关的市场调查发现在国内进行的2000多个会展项目中,仅有15%的项目能够提供相关主题网站基本业务和服务,且提供的服务并不能够满足会展各方的应用,剩余的大部门会展项目信息系统构建的不够完善、技术性差、应用复杂等,甚至提供的只是静态的图画。随着信息技术的不断发展,展览信息化......
  • 服务器多机负载配置器打不开的解决方法
    在前面的时间里,发布了多机负载配置器3.5版本,但如果你在服务器上打不开,那么该怎么办呢?官方已经提供了解决方案,现在多多通过图文教程来告诉大家如何解决打不开的问题。如果软件在您的服务器打不开,请按以下操作添加以下数据执行保护操作单击我的电脑—右键—属性。点击—高级—选项卡......
  • jsp上传文件到服务器指定文件夹问题
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • Windows服务器Oracle11G完全卸载详细教程
    Windows服务器Oracle11G安装详细教程(附Oracle11g安装程序)......
  • 服务器中心机房大数据机房温度和湿度智能化集中监控系统之以太网温湿度传感器
    数据机房服务器数据中心温湿度的解决方案  引言 数据机房是现代企业和组织存储和处理海量数据的关键设施。在这些机房中,服务器承担着运行和存储数据的重要任务。然而,由于服务器的高功耗和密集堆放,温湿度管理成为数据中心运维中不可忽视的问题。为了解决这一难题,H-THRJ45以......
  • 分布式服务高可用实现:复制
    1.为什么需要复制我们可以考虑如下问题:当数据量、读取或写入负载已经超过了当前服务器的处理能力,如何实现负载均衡?希望在单台服务器出现故障时仍能继续工作,这该如何实现?当服务的用户遍布全球,并希望他们访问服务时不会有较大的延迟,怎么才能统一用户的交互体验?这些问......
  • 浅谈-HttpMessageConverter接口
    HttpMessageConverter接口是SpringFramework中的一个接口,用于处理HTTP请求和响应体的消息转换。解释如下:在SpringWeb应用中,控制器(Controller)处理HTTP请求时,通常会返回响应结果给客户端。这些响应结果可以是Java对象、字符串、JSON数据、XML数据等。HttpMess......
  • CentOS 7中搭建NFS文件共享存储服务的完整步骤
    1、https://pythonjishu.com/yemqmdrvwtbrciq/ 步骤一:安装NFS工具在命令行中执行以下命令:sudoyuminstallnfs-utils步骤二:创建共享目录在命令行中执行以下命令:sudomkdir/mnt/nfs_share步骤三:配置NFS服务用以下命令来打开“/etc/exports”文件,并在文件结尾添加如......
  • 6小时快速入门Java微服务架构Spring Boot
    springboot快速入门配置文件例如修改tomcat启动端口号:application.properties:server.port=8080<!--注意yml文件数据值前面必须有空格-->application.yml:server:port:8080配置文件优先级:.properties>.yml>.yamlYAML:基本语法大小写敏感数据......
  • 服务器管理工具(IPMI)以及ipmitool工具使用
    服务器管理工具(IPMI)概念介绍IPMIIPMI(IntelligentPlatformManagementInterface)是一项标准开放的硬件管理能力接口规范,由Intel、HP、Dell和IBM公司在1998年共同提出,其主要经历过版本1.0与1.5两代,目前最新版本为2.0。IPMI是一种可扩展的标准,它定义了如何监控硬件和......