我只是想确保我了解SocketAsyncEventArgs的可重用性功能。据我了解,SocketAsyncEventArgs可以重用于一个连接和不同的操作。所以我将能够使用相同的 SocketAsyncEventArgs 进行连接/发送/接收(客户端(或接受/发送/接收(服务器(? 还是我仍然需要使用新的 SocketAsyncEventArgs 进行不同的操作?
我也明白SocketAsyncEventArgs主要是为服务器端的高性能而设计的。因此,正确的用途是在服务器上有一个 SocketAsyncEventArgs 池,为每个连接保存一个 SocketAsyncEventArgs。并重用 SocketAsyncEventArgs 对连接进行不同的操作。在客户端,你可以只使用一个SocketAsyncEventArgs。
我明白吗?不幸的是,我没有在文档中找到对此的明确说明。
回答我自己的问题: SocketAsyncEventArgs 替换了 IAsyncResult 是 Begin.../End...方法。 因此,对于服务器,您仍然必须有一个用于侦听的套接字。但是你现在每个连接的客户端都有一个SocketAsyncEventArg而不是Socket。 SocketAsyncEventArgs 是可重用的,因为它可用于具有相同连接客户端的所有操作。 改进是,您没有连接的客户端上每个操作操作的 IAsyncResult 。这减少了气相色谱的压力。