C++ 游戏应用程序 UDP 与 TCP

标签 c++ sockets networking tcp udp

我正在制作一个实时应用程序。我不能说太多,但它是一个在线实时应用程序,需要尽可能少的延迟。我正在使用套接字,没有库。我还需要完整的带宽。我应该使用 TCP 还是 UDP?我不介意多编写一些程序来让 UDP 工作。提前致谢。

最佳答案

取决于客户端连接的性质。

TCP 是有状态 session 。如果您同时连接了很多客户端,您可能会遇到端口耗尽的问题。如果客户端频繁连接和断开连接,建立和断开 TCP session 会增加延迟、CPU 负载和带宽。如果您的客户端连接或多或少是永久性的并且同时连接的客户端不多,则 TCP 仅比 UDP 稍差。

UDP 更适合低延迟通信。然而,当心 NAT 防火墙 - 并非所有防火墙都能够或设置为 UDP 地址映射。

另请注意,TCP 是一个流,因此不提供消息打包。您的应用程序必须以额外的开销从 TCP 流组装数据包。

根据定义,UDP 是一个完整的消息,即作为已发送的数据包到达。请注意,无法保证交付,应用程序可能需要提供确认和重新发送层。

关于C++ 游戏应用程序 UDP 与 TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25587707/

相关文章:

c++ - 为什么我的 C++ 代码无法删除 BST 中的所有节点?

c++ - PushBack(push_back()) QStringList 的元素到 vector<string>

c++ - 使用 'this' 指针的链接函数

java - 向 Serializable 类添加方法对序列化对象的大小有什么影响?

c - 快速比较 IP 地址的最智能方法?

java - 上传超大 (> 1GB) 文件的建议

c++ - 为什么 const 没有显示在 typeid().name() 的输出中,c++

c - 在C中使用 'select()'为多客户端进行套接字编程

java - DatagramSocket 上的 DataInputStream

c# - 将文件写入磁盘后无法执行文件