0

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

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

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

谢谢

4

3 回答 3

1

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

是的

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

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

于 2010-02-22T14:33:14.240 回答
0

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

于 2010-02-22T14:35:51.020 回答
0

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

于 2010-02-22T14:36:57.423 回答