Я в основном реализовал this asynchronous server socket example (и соответствующий клиент). Используя его, я могу ответить клиенту, если я точно следую примеру, т. Е. Если вызов Send()
ответ находится в методе ReadCallback()
.Как я могу ответить асинхронно клиенту с помощью сокетов в C#?
Если, однако, я пытаюсь отправить ответ за пределы здесь, то есть в обратном вызове, который я подключил к моей процедуре обработки сообщений (работает в другом потоке), я получаю ошибку this, заявив, что Socket Не подключен. Если я попытаюсь отправить ответ в другом месте в коде Server
, скажем, в цикле while(true)
, который прослушивает входящие соединения, я получаю ту же ошибку.
Я пропустил что-то фундаментальное здесь?
Edit:
Хорошо, так что я прочитал Two-way communication in socket programming using C, и теперь я думаю, в соответствии с этим ответом, что я должен изменить пример, который я связан с тем чтобы я ответить на сервер на socket, возвращенный процессом accept
. Моя цель - позвонить Send()
за пределами получаемого обратного вызова, скажем от Main()
, после подключения клиента и сервера.
Возможно, кто-нибудь предложит мне изменить пример для достижения того, чего я хочу? Я полностью запутался в этом и не хочу создавать отдельный поток, если мне это не нужно (что, согласно моему вопросу, мне не нужно ...).
Проводка соответствующего фрагмента кода до/после внесения изменений поможет нам лучше понять. Разговор хорош, но, как правило, точно не описывает код. – Jon