如果我要将数据包从一台计算机发送到另一台通过以太网电缆直接连接的计算机,使用 UDP 不断轮询接收计算机是否更快,或者使用 Java RMI 让发送者“给出”数据包到接收计算机?
我不知道是否存在任何性能变化?
最佳答案
UDP 通常更快,因为传输上没有额外的确认开销,也不需要为接收确认而烦恼。
使用 TCP,会将确认传输回数据源。全双工通信可以在不中断传入数据流的情况下进行此确认的传输;但是,您必须等待一些时间才能将该确认返回给发件人,并让该发件人处理它。
虽然假定两台计算机的速度足以处理数据流处理,但在现实世界中,计算机可能会发现自己正在执行多个任务,这可能会中断以线路速度处理网络流量的能力。在这种情况下,如果发送计算机无法足够快地接收确认(或者接收计算机无法足够快地传输它们),那么您可能会耗尽未确认数据包的窗口,这将导致发送计算机停止传输,直到确定传输的内容需要重新传输或已被接收。
但是 UDP 并不是称心如意,因为它不确认接收的解决方案是允许任何数据包随时消失而不另行通知。因此,它非常适合不需要完全传输的数据(实时语音,如果丢失,从“现在”数据包开始比收集所有数据包更重要),或者管理重传的数据通过更高效的特定于应用程序的算法。
关于java - 持续轮询,还是 Java RMI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10197436/