【发布时间】:2011-01-25 14:08:01
【问题描述】:
我想在 C++ 中创建一个聊天应用程序(桌面应用程序),所以我需要学习和实现哪个协议。 UDP(?)
请给我一些好的想法和建议以及链接。
【问题讨论】:
标签: c++ c network-programming udp sockets
我想在 C++ 中创建一个聊天应用程序(桌面应用程序),所以我需要学习和实现哪个协议。 UDP(?)
请给我一些好的想法和建议以及链接。
【问题讨论】:
标签: c++ c network-programming udp sockets
您可以使用或查看像 ACE 这样的开源网络库。那里有很多好吃的。
【讨论】:
您可以使用处理即时消息协议的现有库,例如 libpurple。
【讨论】:
UDP 协议不是互联网聊天程序的最佳选择。 UDP 数据包将被代理阻止。并且 UDP 不保证数据包的传递。所以可能TCP协议会是更好的选择。
看看Boost.Asio图书馆。它已经包含chat program 的原始实现。
【讨论】:
尝试使用 Boost.Asio。文档中包含一些examples of chat applications。
【讨论】:
你在这里没有给我们太多细节!
如果您的目的真的是制作一个功能齐全且功能齐全的聊天应用程序,我建议您查看XMPP,它是一个开放的即时通讯协议。 Here 是一些实现它的库的列表。
如果您的目的是学习网络编程,并且您对 UDP 和 TCP 更感兴趣,那么 UDP 对于聊天应用程序来说是一个糟糕的选择,因为它不能保证数据的完整性或顺序。您的消息可能(并且将会!)以错误的顺序接收,或者甚至可能丢失。 TCP 这样做是为了为您检查。
在两者之间(一个非常简单的聊天应用程序),您可以实现自己的协议并使用其他人在此处建议的库,例如 Boost.asio、ACE、POCO,甚至是 wxWidgets 和 Qt,其中将简化套接字处理,并提供您为最后 2 构建桌面应用程序所需的内容。
【讨论】:
UDP 就像一种“一劳永逸”的协议。它速度很快,但如果您使用它通过 Internet 进行通信,则无法保证您的消息会被收到。即使是局域网,您的数据包仍然可能丢失。使用 TCP 会更方便,它可以确保您的数据包正确无误地按照您发送它们的顺序到达。
【讨论】: