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 消息。