Size: a a a

Эликсир и Вунш

2019 July 03

AD

Artem Denezhny in Эликсир и Вунш
'Beagle' интересніе ребята
источник

c🦊

cleverfox 🦊 in Эликсир и Вунш
Artem Denezhny
'Beagle' интересніе ребята
Так это Texas Instruments
источник
2019 July 04

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
суть в том что процесс закрывается после приема данных сразу
Если по памяти написал, то в Pastebin точно есть ошибка
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
def listener(parent_pid, socket) do
 {:ok, data} = :gen_udp.open(socket,0)
 send(parent_pid, {self(), data})
 listener
end
источник

#@

# @ in Эликсир и Вунш
def listener(parent_pid, socket) do
 {:ok, data} = :gen_udp.recv(socket,0)
 send(parent_pid, {self(), data})
 listener(parent_pid, socket)
end
источник

#@

# @ in Эликсир и Вунш
Вот правильная версия
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
def listener(parent_pid, socket) do
 {:ok, data} = :gen_udp.recv(socket,0)
 send(parent_pid, {self(), data})
 listener(parent_pid, socket)
end
Вот исправленная версия: https://gist.github.com/liveforeverx/6cf03c1f748f8b7d3eb97b098f81e5a2
источник

#@

# @ in Эликсир и Вунш
Благодарю
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
def listener(parent_pid, socket) do
 {:ok, data} = :gen_udp.recv(socket,0)
 send(parent_pid, {self(), data})
 listener(parent_pid, socket)
end
Но, если Вы в Elixir-е новый, то очень рекомендую прочитать вот эту главу: https://elixir-lang.org/getting-started/mix-otp/genserver.html и вот эту: https://elixir-lang.org/getting-started/mix-otp/supervisor-and-application.html
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
Благодарю
И переделать с использованием супервизора и GenServer-а.
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
Благодарю
И даже если решите не использовать GenServer, то рекомендую использовать либо Core https://github.com/fishcakez/core либо хотя бы proc_lib http://erlang.org/doc/man/proc_lib.html а не просто spawn.
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
Благодарю
Добавил версию, где не нужно копировать данные между процессами и сообщения получаются сразу в том же процессе (через active, once и получение сообщения) - можно легко модифицировать, чтобы в том же процессе работать с несколькими сокетами.
источник

#@

# @ in Эликсир и Вунш
Большое спасибо, чуть позже сяду разбираться
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
Большое спасибо, чуть позже сяду разбираться
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
# @
Большое спасибо, чуть позже сяду разбираться
Второй вариант с одним процессом, а не с двумя. Третий пример, как это сделать через GenServer, четвёртый пример, как открыть два сокета в одном процессе.
источник

#@

# @ in Эликсир и Вунш
Такой нюанс, почему то прилетают пакеты с разных портов, не только с 19000
источник

#@

# @ in Эликсир и Вунш
19100
19910
источник

#@

# @ in Эликсир и Вунш
Странно,  ведь указан конкретный порт для прослушки
источник

#@

# @ in Эликсир и Вунш
И еще. Что бы вернуть данные в start,  мне кажется, не правильно будет просто returнуть это из receive_loop, ведь она вызывается рекурсивно
источник

#@

# @ in Эликсир и Вунш
Нужно использовать буфер?
источник