Google计算引擎连接到本地UDP端口

时间:2018-08-02 17:18:13

标签: udp google-compute-engine ipc firewall

我有一台服务器在Google计算引擎上监听UDP端口22000。

可以互联网连接,任何计算机都没有问题,但是我无法从本地计算机连接

完全相同的代码可以在任何其他(非Google)Linux计算机上正常运行。

我对默认计算引擎设置的唯一更改是添加了一个防火墙规则,该防火墙规则允许端口22000上的传入UDP。

最欢迎任何帮助!

jaime

1 个答案:

答案 0 :(得分:1)

解决了!

显然,在这些计算机/内核UDP套接字中,发送前需要具有名称(绑定),而在我安装服务器的其他计算机中则不需要。

因此顺序:

socket() settimeout(..) setsockname(..) socksendto(..) sockrecvfrom(..)

...根据Lua套接字文档(http://w3.impa.br/~diego/software/luasocket/udp.html#setsockname),我一直避免使用“ setsockname”:

  

注意:此方法只能在任何数据报之前调用   通过UDP对象发送,并且仅发送一次。否则,系统   自动将对象绑定到所有本地接口并选择一个   发送第一个数据报后,立即使用临时端口。后本地   地址是由系统自动设置还是由系统显式设置   setsockname,无法更改。

...发送时是第一次操作。

由于某种原因,这里是必需的。具体来说,我已经:

setsockname('*',0)-也就是说,绑定到所有本地地址,使用一个以太网端口。