gpt4 book ai didi

networking - 如何在erlang中使用gen_udp进行多播?

转载 作者:行者123 更新时间:2023-12-03 14:42:01 25 4
gpt4 key购买 nike

如何在Erlang中使用gen_udp进行multicasting?我知道它在代码中,后面没有任何文档。发送数据是显而易见且简单的。我想知道如何添加成员资格。不仅在启动时添加成员身份,而且在运行时添加成员身份也很有用。

最佳答案

这是有关如何监听Bonjour / Zeroconf流量的示例代码。

-module(zcclient).

-export([open/2,start/0]).
-export([stop/1,receiver/0]).

open(Addr,Port) ->
{ok,S} = gen_udp:open(Port,[{reuseaddr,true}, {ip,Addr}, {multicast_ttl,4}, {multicast_loop,false}, binary]),
inet:setopts(S,[{add_membership,{Addr,{0,0,0,0}}}]),
S.

close(S) -> gen_udp:close(S).

start() ->
S=open({224,0,0,251},5353),
Pid=spawn(?MODULE,receiver,[]),
gen_udp:controlling_process(S,Pid),
{S,Pid}.

stop({S,Pid}) ->
close(S),
Pid ! stop.

receiver() ->
receive
{udp, _Socket, IP, InPortNo, Packet} ->
io:format("~n~nFrom: ~p~nPort: ~p~nData: ~p~n",[IP,InPortNo,inet_dns:decode(Packet)]),
receiver();
stop -> true;
AnythingElse -> io:format("RECEIVED: ~p~n",[AnythingElse]),
receiver()
end.

关于networking - 如何在erlang中使用gen_udp进行多播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com