2012-04-20 3 views
0

У меня есть консольный аппликатор, который в настоящее время использует CAsyncSocket. Мне нужно реализовать SSL, поэтому после некоторых поисков я нашел этот проект: http://www.codeproject.com/Articles/3915/CAsyncSslSocketLayer-SSL-layer-class-for-CAsyncSocCAsyncSocketEx + консольное приложение?

По какой-то причине такой же простой код, который отлично работает с графическим интерфейсом, не работает в консольном приложении. У кого-нибудь exp. с CAsyncSslSocketLayer? Спасибо.

ответ

1

CAsyncSocketEx использует окно своего рода дешевой нити для обработки уведомлений о событиях, которые приходят от выбора(). К сожалению, если у вас нет цикла сообщений, то созданное окно не получит эти события.

http://support.microsoft.com/kb/90975

В этой статье объясняется, что вызов CreateWindow() должен быть вызван из потока, который имеет цикл обработки сообщений. И если вы этого не сделаете, все, что отправлено через PostMessage(), не попадет туда.

Я недавно начал возиться с этим - я хочу удалить раздражающее скрытое окно и заменить его обычной нитью. Их код зависит от WSAAsyncSelect(), чтобы получать события сокета ... в окно. Юк!

1

Прошло некоторое время с тех пор, как у меня была такая же проблема, но если я правильно помню, для использования CAsyncSocket в консольном приложении вам нужно добавить что-то вроде DECLARE_CONSOLEAPP (первые две ссылки, показанные ниже) в консольное приложение. Это должно дать вашей консоли насос сообщений для генерации уведомлений о сокетах (OnReceive и т. Д.). Приложения GUI имеют эти насосы, но консольные приложения вообще не работают. Третья (msdn) ссылка ниже может также применяться, она имеет больше информации и по-другому.

Если они все еще не работают, вы должны поместить контрольные точки в код сокета и убедиться, что ваш сокет не создан в потоке или обратном вызове, отличном от основного приложения консоли (тот, который теперь имеет насос сообщений) ,

Я думаю, что googling для «CAsyncSocket WinApp» или «консольного приложения CAsyncSocket» будет показывать больше.

http://www.codeguru.com/cpp/misc/misc/consoleapps/article.php/c243/Console-app-using-MFC.htm http://troels.knakkergaard.dk/code.htm

http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/a6f1b72a-21d8-4046-a3dc-d7d29ece2ef6