Heh, I’ve written a LOT of TCP and UDP (and SCTP) protocols over the past 25 years, many in erlang itself, so I like to help when I can. ^.^
Interesting post, how would you write the PHP part in Elixir. I actually need it 
:ok = :gen_tcp.send(socket, payload)
I understood I need to add the size of my payload in the 32 firsts bits of what I send but how would I do that ?
As I recall if you set {packet, 4} in the connect then when you :gen_tcp.send/2 it then it should add it automatically. If however you want to do it manually (like you did not specify a packet option at all then you could do:
payload = :erlang.iolist_to_binary(payload) # Do this if it is not already a binary
:ok = :gen_tcp.send(socket, [<<byte_size(payload)::integer-size(32)>>, payload])
Most Erlang IO functions take IO lists, so that is that above. ![]()
You can also bake it into the payload binary itself, but this is slower as it has to copy the entire payload (assuming it is a binary and not an IOlist too):
:ok = :gen_tcp.send(socket, <<byte_size(payload)::integer-size(32), payload::binary>>)
![]()
Thank you very much !! Indeed I used packet: :line at the beginning and forgot to change it in the connect options 






















