有一个数据馈送服务器通过UDP接收来自不同客户端的馈送,因为客户端正在如此快速地抽取数据,如果服务器花费时间处理接收到的数据,接收缓冲区很容易变满,所以< / p>
感谢。
答案 0 :(得分:1)
尝试的一些策略包括
答案 1 :(得分:1)
如果我理解你的要求那么不,因为你会收到数据然后再发送出来,有效地将你使用的带宽加倍,所以它可能没有帮助。
确保不丢失数据的最佳策略是使用TCP over UDP。但是,如果必须使用UDP,则可以编写一些代码来对每个发送的数据包进行编号(这样可以确保它们按顺序到达),并添加更多允许服务器请求丢失数据包的功能,例如:发送者发送1,2,3,4,但接收器仅接收1,2,4,然后再次请求3.
答案 2 :(得分:1)
UDP可以被认为代表“不可靠的数据报协议”。这样就可以立即解释您的问题:您需要可靠性,这是底层协议无法提供的服务。可能你也想要拥塞控制,因为缺乏网络缓冲是一个拥塞的来源,就像缺乏带宽一样。
解决方案是使用除UDP之外的其他东西,或者在UDP之上添加可靠性和拥塞控制;承认和速率限制,基本上。
UDP的可能替代包括TCP和SCTP。 SCTP会很好,因为它具有数据报模式,因此您不必将协议转换为使用流。见这里:http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol
答案 3 :(得分:0)
你需要编写自己的“ack”方法。客户端重新发送chunk直到从已收到的服务器获取ack。
答案 4 :(得分:0)
如果您需要UDP的可靠性,那么您必须在它之上构建自己的可靠性。正如其他人所说,你需要一些方法从一个对等体向另一个对等体发送ACK,告诉对方数据已经安全到达。然后,另一个对等体可以选择性地重新发送数据报,直到它们被确认为止。
我在这里打开一个问题:What do you use when you need reliable UDP?它正在收集各种选项,以便为基于UDP的传输增加可靠性。