CAsyncSocketEx +控制台应用程序?

时间:2012-04-20 15:14:13

标签: ssl winsock

我有目前使用CAsyncSocket的控制台应用程序。 我需要实现SSL,所以经过一些搜索我找到了这个项目:http://www.codeproject.com/Articles/3915/CAsyncSslSocketLayer-SSL-layer-class-for-CAsyncSoc

出于某种原因,在GUI代码上工作正常的相同简单代码在控制台应用程序中不起作用。 有谁有exp。使用CAsyncSslSocketLayer? 感谢。

2 个答案:

答案 0 :(得分:1)

我遇到同样的问题已经有一段时间了,但如果我没记错,要在控制台应用中使用CAsyncSocket,您需要在控制台应用中添加DECLARE_CONSOLEAPP(如下所示的前两个链接)。这应该给你的控制台一个消息泵来生成套接字通知(OnReceive等)GUI应用程序有这些泵,但控制台应用程序通常没有。下面的第三个(msdn)链接也可能适用,它有更多的信息和不同的方式。

如果这些仍然不起作用,你应该在套接字代码中加入断点,并确保你的套接字没有在主控制台应用程序(现在有消息泵的应用程序)之外的线程或回调中实例化。

我认为在Google上搜索“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

答案 1 :(得分:1)

CAsyncSocketEx使用窗口作为一种廉价线程来处理来自select()的事件通知。不幸的是,如果你没有消息循环,那么它创建的窗口将不会收到这些事件。

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

本文解释了需要从具有消息循环的线程调用CreateWindow()。如果你不这样做,那么通过PostMessage()发送的任何东西都不会到达那里。

我最近开始修补这个 - 我想删除恼人的隐藏窗口并用普通线程替换它。他们的代码依赖于WSAAsyncSelect()来接收套接字事件......到窗口。育!