我创建了两个实验:
实验1:我创建了一个TCP发送器应用和一个TCP接收器应用。
在这个实验中,我在一个iOS设备上启动了TCP发送器,另一个iOS设备上启动了TCP接收器。然后验证它们已经建立连接并发送和接收数据。接着,我将TCP接收器应用程序放到后台。TCP发送器应用程序指示失去连接并崩溃(是的,我是有意这样做的)。
实验2:我创建了一个UDP发送器应用和一个UDP接收器应用。
与上述实验相同,我在一个iOS设备上启动了UDP发送器应用,另一个iOS设备上启动了UDP接收器应用。在UDP接收器应用程序中,我订阅了一个多播组等。我验证UDP接收器应用程序正在接收由UDP发送器应用程序发送到该多播组的数据。然后,我将UDP接收器应用程序放到后台。2分钟后,我让UDP发送器应用程序发送另一段数据。然后,我完全退出UDP发送器应用程序并关闭那个iOS设备。然后,我等待另外2分钟或更长时间,然后从后台启动UDP接收器应用程序。UDP接收器应用程序确实接收到了UDP发送器应用程序在终止之前发送的数据。
在实验1中,我的解释是因为TCP是面向连接的。
在实验2中,我了解到UDP是无连接的。为什么实验2会以我所经历的方式工作?(即使在后台模式下仍然接收数据)