如果客户端不监听UDP端口,那么数据报在哪里?

时间:2010-02-22 14:30:46

标签: udp buffer datagram

假设客户端通过我的应用程序向服务器发送了许多数据报。如果我在服务器端的应用程序停止工作并且无法接收任何数据报,但客户端仍然继续通过UDP协议向服务器发送更多数据克,那些数据报在哪里?他们会留在服务器的操作系统数据缓冲区(或其他东西吗?)

我问这个问题是因为我想知道如果客户端通过互联网向PC发送1000个数据报(每个1K),即使没有人正在收听,这1000个数据报是否会通过互联网(消耗带宽)那些数据?

如果答案是肯定的,我应该如何阻止这种情况发生?我的意思是如果服务器停止运行,我应该如何使用UDP来了解事实并停止任何进一步的发送?

由于

3 个答案:

答案 0 :(得分:1)

  

我问这个问题是因为我想知道如果客户端通过互联网向PC发送1000个数据报(每个1K),即使没有人正在收听,这1000个数据报是否会通过互联网(消耗带宽)那些数据?

  

如果答案是肯定的,我应该如何阻止这种情况发生?我的意思是如果服务器停止运行,我应该如何使用UDP来了解事实并停止任何进一步的发送?

您需要协议级别控制循环,即您需要实施协议来处理这种情况。 UDP不是面向连接的,因此由“应用程序”决定使用UDP来解决这种故障模式。

答案 1 :(得分:0)

UDP本身不提供确定客户端是否成功接收消息的工具。您需要TCP来建立可靠的连接,并在通过UDP发送数据之后。

答案 2 :(得分:0)

最低开销解决方案是像jdupont建议的保持活动类型的东西。您也可以更改为使用tcp,它为您提供此功能。