c++ - 在 MFC 应用程序中监听 UDP 或切换到 TCP

标签 c++ networking tcp network-programming udp

我正在编辑一个遗留的 MFC 应用程序,我必须添加一些基本的网络功能。操作方必须接收一个简单的指令(数字 1、2、3、4...)并根据该指令执行一些操作。客户希望延迟尽可能快,所以我自然而然地决定使用数据报 (UDP)。

但是阅读各种资源让我感到困惑。我无法在 MFC 中收听 UDP 套接字 (CAsyncSocket),只能调用阻塞和等待的 Receive。屏蔽 UI 并不是明智之举。所以我想我可以使用一些线程技术,但由于我对 MFC 不是很了解,应该如何实现?

问题的另一部分是考虑到可靠性和实现问题,我应该这样做还是恢复到 TCP。我知道 UDP 不可靠,但它到底有多不可靠?我读到它最多快 50%,这对我来说很重要。

我使用的引用资料: http://msdn.microsoft.com/en-us/library/09dd1ycd(v=vs.80).aspx

最佳答案

TCP 中的大部分“延迟”是建立初始连接所需的握手。

如果您的客户端应用程序要从您的 MFC 应用程序请求大量命令,那么 TCP 是一个明智的选择。客户端打开一个 TCP 连接并保持打开状态。

如果您的 MFC 应用程序要从不同的客户端接收大量临时命令,那么 UDP 可能是合适的,但您必须权衡节省 TCP 握手的轻微成本是否值得命令可能由于 UDP 将其丢弃,因此根本不会发生。

关于c++ - 在 MFC 应用程序中监听 UDP 或切换到 TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12986791/

相关文章:

c++ - Linux 上 RCF 的 boost 异常

django - 连接到位于 "localhost"的服务器,端口 5432 失败 : Connection refused Is the server running on that host and accepting TCP/IP connections?

node.js - nginx tcp SYN 数据包未收到 ACK

c++ - 重用套接字时出现套接字使用错误

c++ - 为什么 strrchr() 返回 `char*` 而不是 `const char*` ?

c++ - TVirtualStringGrid CopyToClipboard 问题 Embarcadero Seattle C++

c - 从输出接口(interface)以外的另一个接口(interface)选择 IP 源地址

运行少量线程时 CPU 使用率达到 100%

c++ - 不使用 bind() 和 port=0 的 C++ 空闲 TCP 端口列表

android - 如何对android中的 "keep-alive"包使用react?