我只想确保我理解了SocketAsyncEventArgs的可重用性特性。据我所知,SocketAsyncEventArgs可以重用于一个连接和不同的操作。所以我可以使用相同的SocketAsyncEventArgs连接/发送/接收(客户端)或接受/发送/接收(服务器)?或者我仍然需要为不同的操作使用新的SocketAsyncEventArgs?
我也知道SocketAsyncEventArgs主要是为服务器端的高性能而设计的。因此,正确的用法应该是在服务器上有一个SocketAsyncEventArgs池,为每个连接保存一个SocketAsyncEventArgs。并将SocketAsyncEventArgs重用于连接上的不同操作。在客户端,你可以只使用一个SocketAsyncEventArgs。
我的理解对吗?不幸的是,我在文档中没有找到关于这一点的明确声明。
发布于 2019-12-04 16:56:49
回答我自己的问题: SocketAsyncEventArgs替换开始.../结束...所需的IAsyncResult ...方法。因此,对于服务器,您仍然需要有一个用于侦听的套接字。但是,现在每个连接的客户端都有一个SocketAsyncEventArg,而不是一个Socket。SocketAsyncEventArgs在某种意义上是可重用的,即可用于具有相同连接的客户端的所有操作。改进之处在于,您不需要为连接的客户端上的每个操作操作都提供IAsyncResult。
https://stackoverflow.com/questions/59091623
复制相似问题