在局域网中开发聊天应用程序使用哪种协议?

6
我希望创建一个用C++编写的聊天应用程序(桌面应用程序),那么我需要学习和实现哪种协议?UDP(?)
请给我一些好的想法、建议和链接。
6个回答

7
UDP协议不是互联网聊天程序的最佳选择。UDP数据包会被代理服务器阻止。而且UDP不能保证数据包的传递。因此,TCP协议可能是更好的选择。
请查看Boost.Asio库。它已经包含了聊天程序的原始实现。

+1 对于TCP,如果使用Boost.Asio(特别是它的tcpstreams),我会再加上+1。 - Tronic
我发现asio文档不够完善,支持也不够好,即使对于有经验的程序员来说,理解起来也很困难。我不建议使用它。 - Jay

3

您没有提供太多细节!

如果您的目的是制作一个完全可用且功能丰富的聊天应用程序,我建议您查看XMPP,这是一种开放的即时通讯协议。 这里列出了一些实现它的库。

如果您的目的是学习网络编程,并且您更关注UDP与TCP之间的区别,那么UDP对于聊天应用程序来说是一个不好的选择,因为它不能保证数据的完整性或顺序。您的消息可能(并且会!)以错误的顺序接收或甚至有些消息会丢失。 TCP会对此进行检查。

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


1

0

你可以使用或查看像ACE这样的开源网络库。有很多好东西。


0

你可以使用现有的处理即时通讯协议的库,例如libpurple


0
UDP就像是一种“发射后不管”的协议。它很快,但如果你用它在互联网上通信,不能保证你的消息会被完全接收。即使在局域网中,你的数据包仍然可能会丢失。使用TCP更方便,因为它可以确保你的数据包无误地按照发送顺序到达。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接