下面是详细讲解“C#实现HTTP协议迷你服务器(两种方法)”的完整攻略。
一、前言
随着互联网的迅猛发展,Web开发日趋成熟,HTTP协议成为Web开发中不可或缺的一部分。而服务器是Web开发的基础,因此实现一个迷你服务器对学习Web开发有着很大的帮助。本文将通过两种方法实现C#迷你HTTP服务器的搭建。
二、实现方法
方法一:使用TcpListener实现
这是一种使用TcpListener类实现的方法,代码如下:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main(string[] args)
{
TcpListener listener = new TcpListener(IPAddress.Any, 8080); //定义监听IP和端口
listener.Start();
Console.WriteLine("监听已经开启,正在等待客户端连接...");
while (true)
{
TcpClient client = listener.AcceptTcpClient();
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string request = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(request);
string responseText = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html><body><h1>Hello,World!</h1></body></html>";
byte[] response = Encoding.UTF8.GetBytes(responseText);
stream.Write(response, 0, response.Length);
client.Close();
}
}
}
该方法实现的核心是TcpListener类,它是一个监听指定端口的类,通过AcceptTcpClient方法可以接受客户端的请求,之后通过NetworkStream类读取请求,对请求进行处理之后,使用Write方法写回响应。
方法二:使用HttpListener实现
这是一种使用HttpListener类实现的方法,代码如下:
using System;
using System.Net;
using System.Text;
using System.Threading;
class Program
{
static void Listen()
{
HttpListener listener = new HttpListener(); //定义监听对象
listener.Prefixes.Add("http://*:8080/"); //指定绑定的IP和端口
listener.Start();
Console.WriteLine("监听已经开启,正在等待客户端连接...");
while (true)
{
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string responseText = "<html><body><h1>Hello,World!</h1></body></html>";
byte[] buffer = Encoding.UTF8.GetBytes(responseText);
response.ContentType = "text/html; charset=UTF-8";
response.ContentEncoding = Encoding.UTF8;
response.ContentLength64 = buffer.Length;
response.OutputStream.Write(buffer, 0, buffer.Length);
response.Close();
}
}
static void Main(string[] args)
{
Thread thread = new Thread(Listen);
thread.Start();
}
}
该方法使用了HttpListener类实现,核心是HttpListener类,它通过启用一个新线程监听指定的IP和端口,并通过GetContext方法获取到请求,之后构造响应的HttpListenerResponse对象进行写入。
总结
本文介绍了使用C#实现HTTP协议迷你服务器的两种方法,第一个方法使用了TcpListener类,通过AcceptTcpClient方法接受客户端请求,之后读取请求、处理响应并回写,第二个方法使用了HttpListener类,一个通过绑定IP和端口直接获取请求的方法。这两种方法都具有一定的优缺点,在实际开发中可以根据需求进行选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现HTTP协议迷你服务器(两种方法) - Python技术站