所以我们有一个进行udp调用和发送数据包的应用程序。然而,由于响应是针对 UDP 调用给出的,我们如何确保服务已启动、端口已打开以及数据已存储?
我们现在唯一的想法是发送测试数据包并确保它们被保存到数据库中。
所以我的总体问题是,是否有更好、更简单的方法来确保我们的 udp 调用成功?
在侦听主机上,您可以使用 netstat 验证端口是否打开。例如,如果您的应用程序使用 UDP 端口 68,您可以运行:
# Grep for :<port> from netstat output.
$ netstat -lnu | grep :68
udp 0 0 0.0.0.0:68 0.0.0.0:*
您还可以将一些测试数据发送到您的应用程序,然后检查您的数据库以验证夹具数据是否已进入您的数据库。这并不意味着它总是会,只是它在测试时起作用。
最终,问题是 UDP 数据包是尽力而为的,并且不能保证。因此,除非您可以将您的日志平台配置为在接收和/或写入数据后发送某种确认,否则您无法保证任何事情。 UDP 的本质是它将确认(如果有)留给应用层。
我们采用了不同的方法,我们正在检查以确保调用已到达数据库。查询表并确保记录在其中非常容易。如果最近没有,我们知道出了点问题。 CodeGnome 有一个好主意,只是不是我们走的路。谢谢!
选项 1:
参考https://support.huaweicloud.com/intl/zh-cn/elb_faq/elb_faq_0024.html
选项2
我们需要在服务器端对相同的端口启用 TCP 和 UDP