1> A = ["239.192.7.27","24027"].
["239.192.7.27","24027"]
4> udp_bin:start(A).
Socket #Port<0.2400>:
ok
что изменить что бы начать получать данные?
Я настраиваю получение данных по udp, написала код для проверки самого факта получения
На всякий случай уточню: у Вас компьютеры включены в свич или кроссовером? У меня роутер со стороны LAN (да, именно с одной стороны от НАТа) не пропускал мультикасты. То есть, в домашней сети они не ходили вообще. Потратил три дня на разные проверки. Обнаружил при прямом включении (кроссовером). Пришлось докупать самый простой свич - тогда заработало.
--
Вы получили это сообщение, поскольку подписаны на группу Erlang по-русски.
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес erlang-russia...@googlegroups.com.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу erlang-...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/groups/opt_out.
У кого есть опыт работы с мультикастом, а именно с igmp v3 и соответственно с ssm (source specific multicast), что нужно добавить или изменить в коде представленом в заглавии?
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
если я просто запускаю код, то подписки нет и нет данных для обработки
0:32,16#01010101:32>>}' делать.
-module(udp_bin_ssm).
-compile([export_all]).
start([Source,Group,Port]) ->
{ok,SourceAddress} = inet:parse_address(Source),
{ok,GroupAddress} = inet:parse_address(Group),
{ok,Socket} = gen_udp:open(erlang:list_to_integer(Port),
[
inet,
binary,
{active,true},
{reuseaddr,true},
{multicast_ttl, 30},
{raw, 0, 39, << ip_to_binary(GroupAddress)/binary, %%15
ip_to_binary({0,0,0,0})/binary,
ip_to_binary(SourceAddress)/binary >>}
]),
io:format("Socket ~p:~n", [Socket]),
Pid = spawn(fun() -> loop(Socket) end),
io:format("Pid :~p~n",[Pid]),
ok = gen_udp:controlling_process(Socket,Pid).
ip_to_binary(Ip) ->
list_to_binary(tuple_to_list(Ip)).
loop(Socket) ->
receive
{udp,_Socket,_SrcAddr,_Port,Bin} ->
io:format("Bin ~p:~n", [Bin]),
loop(Socket);
Msg ->
io:format("Msg ~p:~n", [Msg])
end.--
(ip_to_binary({0,0,0,0}))/binary,
(ip_to_binary(SourceAddress))/binary--
Всем спасибо за помощь, процесс пошел.
Я настраиваю получение данных по udp, написала код для проверки самого факта получения
-module(udp_bin).
-compile([export_all]).
start([Host,Port]) ->
{ok,IpAddress} = inet_parse:address(Host),
{ok,Socket} = gen_udp:open(erlang:list_to_integer(Port),
[
binary,
{active,true},
{reuseaddr,true}
]),
inet:setopts(Socket,[{add_membership,{IpAddress,{0,0,0,0}}}]),
io:format("Socket ~p:~n", [Socket]),
Pid = spawn(fun() -> loop(Socket) end), %%15
ok = gen_udp:controlling_process(Socket,Pid).
loop(Socket) ->
receive
{udp,_Socket,_SrcAddr,_Port,Bin} ->
io:format("Bin ~p:~n", [Bin]), %%25
loop(Socket)
набираю следующие команды
1> A = ["239.192.7.27","24027"].
["239.192.7.27","24027"]
4> udp_bin:start(A).
Socket #Port<0.2400>:
ok
что изменить что бы начать получать данные?
--
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
<<"Reset">> [] и интереса из себя никаго не представляет