".NET Core异步/等待TCP与Linux"

3

我试着用代码在Linux上编写一个简单的.NET回显服务器

    static async Task soc() {
        var listener = new TcpListener(IPAddress.Loopback, 8888);
        listener.Start();
        for (;;) {
            logger.LogInformation("Wait new connetcion");
            using(var client = await listener.AcceptTcpClientAsync())
            {
                logger.LogInformation("Get new connection");
                echo(client);
                client.Close();
            }
        }
    }

    static async void echo(TcpClient client) {
        var buf = new byte[512];
        using(var stream = client.GetStream())
        {
            var i = await stream.ReadAsync(buf, 0, 512);

            if (i < 1) {
                return;
            }

            await stream.WriteAsync(buf, 0, 512);
        }
    }

当我在Linux上使用异步/等待TCP函数,如stream.ReadAsync时,.NET使用epoll还是普通socket?


2
你是在询问.NET运行时如何在Linux上实现异步套接字吗?运行时是开源的,为什么不自己去看看呢? - Jonathon Reinhart
你是完全正确的。.NET在Linux上使用epoll进行异步操作 https://github.com/dotnet/corefx/blob/master/src/Native/Unix/System.Native/pal_networking.c - Sem Grozovski
如有发现,请随意添加简短的描述性答案。 - Jonathon Reinhart
1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接