在MFC应用程序中聆听UDP或切换到TCP
Listening UDP or switch to TCP in a MFC application
我正在编辑旧版MFC应用程序,我必须添加一些基本的网络功能。操作方必须收到一个简单的指令(数字1,2,3,4 ...),并根据此操作做点什么。客户希望延迟尽可能快,因此自然而然地,我决定使用数据报(UDP)。
但是阅读各种资源使我感到困惑。我无法听MFC中的UDP插座(CAsyncSocket
),只能调用接收哪些块和等待。阻止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将其扔掉,永远不会发生。
谢谢大家。从上面的所有内容中,我决定尝试使用UDP。至于我的实施问题,我自己找到了一个答案,这对我有很大帮助,看来这将使我的沟通井井有条。对于将来阅读或提出同样的人来说
http://www.codeproject.com/articles/16581/sending-receiving-udp-datagrams-with-mfc-s-casyncs
为什么不能使用Casyncsocket在MFC中收听UDP插座?我有这样做的代码。用端口号,sock_dgram和fd_read作为参数来调用Create()。OnReceive()应自动调用。如果没有,您可以通过使用FD_READ参数调用AsyncSelect()来产生它。
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- "acceptor"在从TCP迁移到UDP时不是"boost::asio::ip::udp
- 使用 tcp 重传的可靠 udp
- 了解 UDP 数据包大小限制的 TCP 数据包大小限制以及它在 boost::asio 编程级别的含义
- 为什么我的网络 TCP/UDP 实现不起作用?
- 我可以在TCP和UDP中使用相同的sockaddr_in吗?
- 处理 tcp/udp 接收的最佳方法
- 在Linux中获取TCP/UDP表
- 在MFC应用程序中聆听UDP或切换到TCP
- 通过TCP的SIP+转换为UDP以与SIP电话通话
- 使用 TCP 套接字'register'客户端进行 UDP 连接?
- 如何在 c++ 的一个应用程序中同时使用 TCP 和 UDP
- 如何区分 DTLS 数据包与 TCP、UDP 数据包
- 在linux上的c++中获取活动的TCP/UDP连接
- 如何获取目标应用程序的tcp/udp端口列表
- TCP and UDP interference
- 建立P2P TCP/UDP连接(NAT穿越)
- 在c++ winsock server中结合TCP和UDP
- 为什么用于零拷贝的OpenOnload扩展API没有任何UDP发送或TCP接收的内容?
- P2p开源库tcp/udp组播支持