<div dir="ltr"><div><span class="">From the stackoverflow link, SO_REUSEADDR let you use the same source address when a previous socket is closing (TIME_WAIT).<br></span><span class="">SO_REUSEPORT let you use the same source address and port as long as the socket tuple is different.<br>{<protocol>, <src addr>, <src port>, <dest addr>, <dest port>}<br></span></div><span class="">On some systems </span><span class="">(Linux =< 3.9, Windos) SO_REUSEADDR is the same as the combination of </span><span class="">SO_REUSEADDR and </span><span class="">SO_REUSEPORT.</span><div><span class=""><br>It seems that Linux and BSD use a slightly different raw setting for </span><span class=""><span class="">SO_REUSEPORT</span>:<br><a href="https://github.com/aetrion/erl-dns/commit/0c8d768ae69773d2163ea0741125471983b9a57d#diff-06495a7d8430a91558d99be5f1209c32R83">https://github.com/aetrion/erl-dns/commit/0c8d768ae69773d2163ea0741125471983b9a57d#diff-06495a7d8430a91558d99be5f1209c32R83</a><br>[{<span class="">raw</span>, <span class="">1</span>, <span class="">15</span>, <<<span class="">1</span>:<span class="">32</span>/<span class="">native</span>>>}];<br><br></span></div><div><span class="">How can I build a UDP server that listen on a fixed {Addr, Port} and creates a new process for a new client connection?<br></span></div><div><span class="">Does this suppose to work?<br><br></span></div><div><span class="">1. Open a UDP socket and listen on a fixed port with SO_REUSEPORT set.<br>gen_udp:open(Port, Opts)<br></span></div><div><span class="">2. When we get a UDP packet, connect to the client and create a new process and pass the existing socket to it.<br></span><span class="">gen_udp:connect(Socket, Address, Port)</span></div><div><span class="">3. goto 1.<br><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 22, 2015 at 8:16 PM, Max Lapshin <span dir="ltr"><<a href="mailto:max.lapshin@gmail.com" target="_blank">max.lapshin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">Wow!</div><div class="gmail_extra"><br></div><div class="gmail_extra">Thanks for this thing!</div></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>