2
Erlang 16的默認UDP監聽行爲是否發生了變化?我寫了下面的代碼,通過UDP發送的溫度和溼度每2秒:Erlang 16B01不再接收來自arduino的udp消息
unsigned int sendPort = 8888;
IPAddress sendIp(10, 0, 1, 16);
Udp.beginPacket(sendIp, sendPort);
Udp.write(ReplyBuffer, 8);
Udp.endPacket();
二郎R15在Mac上似乎接收數據包罰款:
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
但在二郎R16B01在Mac上它沒有收到任何東西:
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消息。
測試沒有連接選項,「{ok,S} = gen_udp:open(8888,[])。」和R16B01的開始? – 0xAX
而且你會發送到'10,0,16,16',但你沒有在'udp'監聽器中指定ip,我認爲你必須發送到'127.0.0.1',這裏有默認監聽器。 – 0xAX
我使用R15和R16中的相同選項進行了測試。我不認爲我可以設置要聽的地址。我做了另一次嘗試來詳細說明所有我可以用'gen_udp:open(8888,[inet,binary,{recbuf,100},{read_packets,1},{ifaddr,{10,0,1,16}},{ ip,{10,0,1,16}},{multicast_loop,true},{active,true},{add_membership,{{10,0,1,26},{10,0,1,16}}} ,{deliver,term},{dontroute,true},{header,0},{mode,binary},{read_packets,1}])'但是得到了相同的結果。 – HawaiianSpork