【问题标题】:which protocol used for developing a chat application over LAN?哪种协议用于通过 LAN 开发聊天应用程序?
【发布时间】:2011-01-25 14:08:01
【问题描述】:

我想在 C++ 中创建一个聊天应用程序(桌面应用程序),所以我需要学习和实现哪个协议。 UDP(?)

请给我一些好的想法和建议以及链接。

【问题讨论】:

    标签: c++ c network-programming udp sockets


    【解决方案1】:

    您可以使用或查看像 ACE 这样的开源网络库。那里有很多好吃的。

    【讨论】:

      【解决方案2】:

      您可以使用处理即时消息协议的现有库,例如 libpurple

      【讨论】:

        【解决方案3】:

        UDP 协议不是互联网聊天程序的最佳选择。 UDP 数据包将被代理阻止。并且 UDP 不保证数据包的传递。所以可能TCP协议会是更好的选择。

        看看Boost.Asio图书馆。它已经包含chat program 的原始实现。

        【讨论】:

        • +1 表示 TCP,我会给 Boost.Asio(尤其是它的 tcpstreams)另一个 +1。
        • 我发现 asio 的文档记录很差,没有得到很好的支持,即使对于有经验的程序员来说也很难理解。我不会推荐它。
        【解决方案4】:

        尝试使用 Boost.Asio。文档中包含一些examples of chat applications

        【讨论】:

          【解决方案5】:

          你在这里没有给我们太多细节!

          如果您的目的真的是制作一个功能齐全且功能齐全的聊天应用程序,我建议您查看XMPP,它是一个开放的即时通讯协议。 Here 是一些实现它的库的列表。

          如果您的目的是学习网络编程,并且您对 UDP 和 TCP 更感兴趣,那么 UDP 对于聊天应用程序来说是一个糟糕的选择,因为它不能保证数据的完整性或顺序。您的消息可能(并且将会!)以错误的顺序接收,或者甚至可能丢失。 TCP 这样做是为了为您检查。

          在两者之间(一个非常简单的聊天应用程序),您可以实现自己的协议并使用其他人在此处建议的库,例如 Boost.asioACEPOCO,甚至是 wxWidgetsQt,其中将简化套接字处理,并提供您为最后 2 构建桌面应用程序所需的内容。

          【讨论】:

            【解决方案6】:

            UDP 就像一种“一劳永逸”的协议。它速度很快,但如果您使用它通过 Internet 进行通信,则无法保证您的消息会被收到。即使是局域网,您的数据包仍然可能丢失。使用 TCP 会更方便,它可以确保您的数据包正确无误地按照您发送它们的顺序到达。

            【讨论】:

              猜你喜欢
              • 2013-06-11
              • 2015-06-14
              • 2011-11-06
              • 1970-01-01
              • 2012-01-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多