我正在编写一个套接字服务器,基于 CodeProject 上的一个示例,该示例本身源自 Microsoft 的示例。
在这两种情况下,入站消息会立即使用相同的 SocketAsyncEventArgs 返回给发送方。 而在我的情况下,在回复客户端之前,我需要将入站消息送到进一步的异步处理中。
问题在于,返回的响应可能会尝试同时使用与来自客户端的另一条消息相同的 SocketAsyncEventArgs 。 当出现这种情况时,我会收到以下异常:
"An asynchronous socket operation is already in progress using this SocketAsyncEventArgs instance"
所以,(我认为)我需要一个单独的 SocketAsyncEventArgs 池来处理发出的消息。 到目前为止都可以理解。
我的问题是,我不确定如何创建出站的 SocketAsyncEventArgs ,因为它与入站的密切相关。
我能重复使用多少入站消息?例如,如果我只是指向同一个 AcceptSocket,当消息同时在两个方向传输时是否会出现问题?
有没有人有一些示例代码,可以从入站消息派生出站的 SocketAsyncEventArgs ? 还是我没有理解到关键点?