0

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

但这对我不起作用。

4

1 回答 1

4

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

我建议您从 WebAPI 或 WCF 之类的东西开始,并且仅在必要时使用裸套接字。如果你确实确实需要使用套接字,那么我建议你先用/方法TaskFactory.FromAsync来包装;这效率稍低,但编程模型更简单。如果性能测试表明您的服务器此时还不够快,那么您应该使用 Stephen Toub 博客文章中的自定义等待方法。BeginEnd

您的服务器不工作的原因是因为您没有倾听或接受。我建议您改用 WebAPI 或 WCF。

于 2013-10-28T12:36:15.330 回答