当前位置:   article > 正文

C#版支持高并发的HTTP服务器的示例源代码

C#版支持高并发的HTTP服务器的示例源代码

以下是一个简单的C#版支持高并发的HTTP服务器的示例源代码:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // 创建监听套接字
        TcpListener listener = new TcpListener(IPAddress.Any, 8080);
        listener.Start();
        Console.WriteLine("HTTP服务器已启动");

        // 处理客户端请求
        while (true)
        {
            TcpClient client = listener.AcceptTcpClient();
            Task.Run(() => HandleClientRequest(client));
        }
    }

    static void HandleClientRequest(TcpClient client)
    {
        try
        {
            // 读取请求数据
            byte[] buffer = new byte[1024];
            StringBuilder requestBuilder = new StringBuilder();
            int bytesRead = client.GetStream().Read(buffer, 0, buffer.Length);
            while (bytesRead > 0)
            {
                requestBuilder.Append(Encoding.ASCII.GetString(buffer, 0, bytesRead));
                if (client.Available > 0)
                {
                    bytesRead = client.GetStream().Read(buffer, 0, buffer.Length);
                }
                else
                {
                    break;
                }
            }
            string request = requestBuilder.ToString();
            Console.WriteLine($"收到客户端请求:{request}");

            // 构造响应数据
            string response = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello, World!";
            byte[] responseBytes = Encoding.ASCII.GetBytes(response);

            // 发送响应数据
            client.GetStream().Write(responseBytes, 0, responseBytes.Length);
            client.GetStream().Flush();
            Console.WriteLine("响应已发送");

            // 关闭连接
            client.Close();
        }
        catch (Exception ex)
        {
            Console.WriteLine($"处理请求时出现异常:{ex}");
        }
    }
}

在上述代码中,我们使用TcpListener来监听端口8080,并在循环中接受客户端请求。每当有新的客户端连接时,我们创建一个新的线程来处理该客户端请求,以支持高并发。
在HandleClientRequest方法中,我们从客户端读取请求数据,并构造一个简单的响应数据。然后,将响应数据发送回客户端,并关闭连接。
请注意,这只是一个简单的示例代码,没有处理HTTP协议的全部细节,如请求头解析、路由处理、静态文件服务等。在实际开发中,你可能需要使用现有的HTTP服务器库(如ASP.NET Core、HttpListener等)或基于HTTP服务器库进行开发,以处理更复杂的HTTP请求和响应。
希望以上信息对你有所帮助!
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/252139
推荐阅读
相关标签
  

闽ICP备14008679号