zoukankan      html  css  js  c++  java
  • Asp.netCore 是用的Socket 吗?

    Asp.netCore 是用的Socket 的krestrel 用的是Socket!

    public static IWebHostBuilder CreateDefaultBuilder(string[] args)
            {
                IWebHostBuilder webHostBuilder = new WebHostBuilder().UseKestrel(delegate (WebHostBuilderContext builderContext, KestrelServerOptions options)
                {
                    options.Configure(builderContext.Configuration.GetSection("Kestrel"));
                })
    

      

            public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder)
            {
                return hostBuilder.ConfigureServices(delegate (IServiceCollection services)
                {
                    services.TryAddSingleton<ITransportFactory, SocketTransportFactory>();
                    services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
                    services.AddSingleton<IServer, KestrelServer>();
                });
            }
    

      再进去,终于看到了:

    public Task BindAsync()
            {
                if (_listenSocket != null)
                {
                    throw new InvalidOperationException(SocketsStrings.TransportAlreadyBound);
                }
                IPEndPoint iPEndPoint = _endPointInformation.IPEndPoint;
                Socket socket = new Socket(iPEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                EnableRebinding(socket);
                if (iPEndPoint.Address == IPAddress.IPv6Any)
                {
                    socket.DualMode = true;
                }
                try
                {
                    socket.Bind(iPEndPoint);
                }
                catch (SocketException ex) when (ex.SocketErrorCode == SocketError.AddressAlreadyInUse)
                {
                    throw new AddressInUseException(((Exception)ex).Message, (Exception)ex);
                }
                if (_endPointInformation.IPEndPoint.Port == 0)
                {
                    _endPointInformation.IPEndPoint = (IPEndPoint)socket.LocalEndPoint;
                }
                socket.Listen(512);
                _listenSocket = socket;
                _listenTask = Task.Run(() => RunAcceptLoopAsync());
                return Task.CompletedTask;
            }
    气功波(18037675651)
  • 相关阅读:
    web前端性能意义、关注重点、测试方案、优化技巧
    前端性能优化和规范
    高性能网站性能优化与系统架构(ZT)
    【转载】12306铁道部订票网站性能分析
    构架高性能WEB网站的几点知识
    减少图片HTTP 请求的方案
    网站性能优化:动态缩略图技术实现思路
    不错的jquery插件
    jQuery 遍历
    JavaScript slice() 方法
  • 原文地址:https://www.cnblogs.com/qgbo/p/11978220.html
Copyright © 2011-2022 走看看