在Google Compute Engine上接收UDP数据包

时间:2015-05-27 14:42:18

标签: java networking udp port google-compute-engine

我的任务是在Google Compute Engine上接收UDP数据包。给定的是端口,它是300,我已经有一个简单的Java程序可以处理这些UDP数据包。

我现在的问题。获取UDP数据包到我的Java程序。

为此,我不知道该怎么做。 到目前为止我所尝试的是让Java程序直接听取端口,这不起作用。我怀疑来自GCE外部的流量必须路由到内部吗?

2 个答案:

答案 0 :(得分:1)

首先确保您已在GCE VM实例的网络上添加了防火墙规则,该规则允许端口300上的UDP协议的传入流量。 您可以通过转到开发人员控制台,选择项目,然后计算 - >来完成此操作。计算引擎 - >网络,单击正确的网络并验证防火墙规则(如果您使用它们也会验证标签)。如果未添加规则,则为流量添加规则。

" gcloud"是一个命令行工具,您可以使用它来列出和验证您的防火墙规则[1]:
$ gcloud计算防火墙规则列表

如果防火墙规则良好,则使用netcat之类的简单故障排除工具来测试是否将流量转发到VM实例。

1. Listing Google Compute Engine firewall rules

答案 1 :(得分:0)

我建议不要使用Java来处理UDP。我经历了无法解释的短暂时期,所有到达的UDP流量都丢失了。这是垃圾收集造成的。

对我有用的架构是使用GCE VM和C ++应用程序接收UDP数据,然后使用libCURL,将数据转换为HTTP并将其发送到Google App Engine进行处理。要使UDP接收器具有可扩展性和容错性,请使用网络平衡和多个侦听UDP的VM。