代码之家  ›  专栏  ›  技术社区  ›  Sunil Padhi

在套接字中使用异步等待

  •  0
  • Sunil Padhi  · 技术社区  · 11 年前

    在Steffen Toub的代码中 Awaiting Socket Operations :它没有提到它的用法 异步 方法。我的意思是服务器程序将如何调用 异步 方法使用 等候 ? 没有 主要的 ()。请详细说明。我尝试创建一个main()并调用 SocketExtensions.ReceiveAsync(sock,不可用);

    public static void Main(string[] str)
    {
        Console.WriteLine("\n\n<<<<<<<<<<<  Server is starting...  >>>>>>>>>>>>>>>>>");
    
        IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 10100);
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        var args = new SocketAsyncEventArgs();
        args.SetBuffer(new byte[0x100000], 0, 0x100000);
        var awaitable = new SocketAwaitable(args);
        while(true)
            SocketExtensions.ReceiveAsync(sock,awaitable);
    }
    

    但这对我不起作用。

    1 回复  |  直到 11 年前
        1
  •  4
  •   Stephen Cleary    11 年前

    Stephen Toub的博客文章不是sockets教程;它展示了如何使用自定义的awaitables来支持极其高性能的套接字应用程序。

    我建议您从WebAPI或WCF之类的东西开始,如果您 到。如果您确实需要使用套接字,那么我建议您首先使用 TaskFactory.FromAsync 包裹 Begin / End 方法;这效率稍低,但却是一个更容易的编程模型。如果性能测试表明您的服务器在这一点上不够快, 然后 您应该使用Stephen Toub的博客文章中的自定义awaiter方法。

    你的服务器无法工作的原因是你没有倾听,也没有接受。我建议您改用WebAPI或WCF。