簡體   English   中英

在套接字中使用Async-Await

[英]Using Async-Await in Socket

在Stefen Toub的代碼Awaiting Socket Operations中 :它沒有提及其異步方法的用法。 我的意思是服務器程序將如何使用await調用異步方法? 它們也不是main ()。 請詳細說明。 我嘗試創建一個main()並調用SocketExtensions.ReceiveAsync(sock,awaitable);

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);
}

但這對我沒有用。

Stephen Toub的博客文章不是套接字教程; 它顯示了如何使用自定義等待對象支持超高性能套接字應用程序。

我建議您從WebAPI或WCF之類的東西開始,並且僅在必要時使用裸套接字。 如果絕對需要使用套接字,那么建議您首先使用TaskFactory.FromAsync來包裝Begin / End方法; 這效率稍低,但編程模型更簡單。 如果性能測試表明您的服務器此時還不夠快, 那么您應該使用Stephen Toub博客文章中的自定義等待方法。

您的服務器無法正常工作的原因是您沒有在聽或接受。 我建議您改用WebAPI或WCF。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM