我一直在围绕UDP进行定制以使其可靠。我有这个设计问题,我只有在我的整个程序准备就绪后才开始实现,并开始将数据包从源发送到接收器。可靠的UDP实现设计问题
场景: 我创建了一个接收数据包的单线程。父节点执行数据包发送作业。由于这只是一个POC,所以我将缓冲区和公共数据结构保存为全局指针,为其分配内存。我正在使用互斥关注关键内存部分。
作为可靠性的一部分,我发送一些控制数据包与数据包分开。在任何时候,客户端都会发送数据包并从服务器接收控制包,而服务器将接收数据包并发送控制包。我已经使用单个套接字,因为我的理解是发送& recv同时处理单个套接字和默认阻塞。
问题: 为了测试目的,我发送了100个数据包,从源到数据包。不幸的是,服务器端的线程忙不停地接收数据包并将其存储在缓冲区中。在父线程获取上下文切换之前,服务器代码不会将数据包传递给应用程序。这增加了整体通信中不可接受的延迟。
请帮我理解,这是什么问题;可以改变什么来改善性能?
由于提前,基达
TCP可能比UDP更可靠。为什么你不能使用TCP/IP套接字? –
要求适用于流式传输应用程序。 tcp将不太适合。 – KedarX