2

Erlang 16 的默认 UDP 侦听行为是否发生了变化?我编写了以下代码,每 2 秒通过 UDP 发送温度和湿度:

unsigned int sendPort = 8888;
IPAddress sendIp(10, 0, 1, 16);

Udp.beginPacket(sendIp, sendPort);
Udp.write(ReplyBuffer, 8);
Udp.endPacket();  

Mac 上的 Erlang R15 似乎可以正常接收数据包:

Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false] [dtrace]

Eshell V5.9.3.1  (abort with ^G)
1> {ok,S}=gen_udp:open(8888,[]).
{ok,#Port<0.581>}
2> flush().
Shell got {udp,#Port<0.581>,{10,0,1,26},8888,[0,0,0,220,0,0,2,179]}
Shell got {udp,#Port<0.581>,{10,0,1,26},8888,[0,0,0,220,0,0,2,179]}
ok

但是在 Mac 上的 Erlang R16B01 中,它没有收到任何东西:

Erlang R16B01 (erts-5.10.2) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V5.10.2  (abort with ^G)
1> {ok,S}=gen_udp:open(8888,[]).
{ok,#Port<0.580>}
2> flush().
ok

一个简单的 python 脚本也接收 UDP 消息。

4

1 回答 1

0

我是个白痴。这是mac防火墙。防火墙首选项设置为阻止一个版本的 erlang 而不是另一个版本的传入流量。

于 2013-07-20T11:40:52.723 回答