-1

我正在 C++ 中启动 Instant Messenger 程序,Qt 用于 UI,WinSocks 用于套接字内容。我有几个问题。

  1. 根据我在 Qt 上阅读的内容,当您启动主应用程序时,必须从主线程调用 exec() 以启用事件处理。但是考虑到 exec 块,如果有人试图连接,我需要不断地从主应用程序检查,我不能阻止。而且我需要事件处理,因为当用户单击他的联系人姓名之一时,它应该连接并能够发送消息。解决此问题以检查单独线程中的传入连接的最佳方法是什么?并且还在单独的线程中连接到其他人?我只是不确定这是否是最好的方法,因为我觉得我到处都会有一堆线程。而且我不太确定 Qt 的所有功能,因为我刚开始使用它。

  2. 我应该将 Boost 用于套接字吗?哪个更好?我只想学习什么是最相关的,所以你们的意见是什么。

关于我应该如何处理事情的任何其他提示也将不胜感激。

4

1 回答 1

1

调用 QApplication 的 exec() 应该是主函数中的最后一件事,在调用 exec() 之前,您需要创建一个或多个单独的线程来检查传入连接并执行其他操作。在这种情况下,多线程是唯一的方法。Qt 支持自己的线程库:http: //qt-project.org/doc/qt-4.8/threads.html

对于问题的第二部分,由于您已经在使用 Qt,您可以使用 Qt 的套接字(http://qt-project.org/doc/qt-5.0/qtnetwork/securesocketclient.html)。

相关讨论:Winsock 的跨平台替代品?

于 2013-08-21T01:37:07.050 回答