即时通讯程序

时间:2013-08-21 01:28:17

标签: c++ qt sockets

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

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

  2. 我应该使用Boost作为套接字吗?哪个更好?我是关于学习什么是最相关的,所以你们的观点是什么。

  3. 关于如何处理事情的任何其他提示也将受到赞赏。

1 个答案:

答案 0 :(得分:1)

调用QApplication的exec()应该是main函数中的最后一件事,在调用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)。

相关讨论:Crossplatform alternative to Winsock?