假设客户端通过我的应用程序向服务器发送了许多数据报。如果我在服务器端的应用程序停止工作并且无法接收任何数据报,但客户端仍然继续通过UDP协议向服务器发送更多数据克,那些数据报在哪里?他们会留在服务器的操作系统数据缓冲区(或其他东西吗?)
我问这个问题是因为我想知道如果客户端通过互联网向PC发送1000个数据报(每个1K),即使没有人正在收听,这1000个数据报是否会通过互联网(消耗带宽)那些数据?
如果答案是肯定的,我应该如何阻止这种情况发生?我的意思是如果服务器停止运行,我应该如何使用UDP来了解事实并停止任何进一步的发送?
由于
答案 0 :(得分:1)
我问这个问题是因为我想知道如果客户端通过互联网向PC发送1000个数据报(每个1K),即使没有人正在收听,这1000个数据报是否会通过互联网(消耗带宽)那些数据?
是
如果答案是肯定的,我应该如何阻止这种情况发生?我的意思是如果服务器停止运行,我应该如何使用UDP来了解事实并停止任何进一步的发送?
您需要协议级别控制循环,即您需要实施协议来处理这种情况。 UDP不是面向连接的,因此由“应用程序”决定使用UDP来解决这种故障模式。
答案 1 :(得分:0)
UDP本身不提供确定客户端是否成功接收消息的工具。您需要TCP来建立可靠的连接,并在通过UDP发送数据之后。
答案 2 :(得分:0)
最低开销解决方案是像jdupont建议的保持活动类型的东西。您也可以更改为使用tcp,它为您提供此功能。