【问题标题】:Instant Messenger Program [closed]即时通讯程序[关闭]
【发布时间】:2013-08-21 10:06:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ qt sockets


    【解决方案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)。

    相关讨论:Crossplatform alternative to Winsock?

    【讨论】:

      猜你喜欢
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多