Я писал сокет-сервер на базе сервера CodeProject , который сам по себе взят из оригинального примера Microsoft .
В обоих случаях входящее сообщение немедленно возвращается отправителю, используя тот же SocketAsyncEventArgs .
В моем случае мне нужно отправить входящее сообщение для дальнейшей асинхронной обработки перед ответом клиенту.
Проблема заключается в том, что возвращающийся ответ может попытаться использовать тот же SocketAsyncEventArgs одновременно с дальнейшим сообщением от клиента.
Когда это происходит, я получаю это исключение:
"An asynchronous socket operation is already in progress using this SocketAsyncEventArgs instance"
Итак, (я считаю) мне нужен отдельный пул SocketAsyncEventArgs для сообщений, возвращающихся обратно. Пока все понятно.
Моя проблема в том, что я не уверен, как создать исходящий SocketAsyncEventArgs , поскольку он тесно связан с входящим.
Какую часть входящего я могу использовать повторно? например Если я просто укажу на тот же AcceptSocket, будут ли проблемы, когда сообщения будут перемещаться в обоих направлениях одновременно?
У кого-нибудь есть пример кода, как получить исходящий SocketAsyncEventArgs из входящего?
Или я упускаю суть?