我正在编辑一个遗留的 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/