<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hello---<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I've got a fork of czmq wherein I added code to give developers<br>
a little more control over "ephemeral" ports. (You know, where<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">port is specified as "*" in "tcp://1.2.3.4:*"<br>
<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Normally, the * notation for a port means for the software to<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
pick the first free port in the range C000 to FFFF (49152 to 65535. iirc).<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">With this extension, you can now say:<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
tcp://*:*[50123-52123]  <br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">    interpreted:  bind to all interfaces; choose the first open port in the<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
    range between 50123 and 52123.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">tcp://*:![40000-50000]<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
     interpreted: bind to all interfaces; choose a random port between 40-thousand<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">     and 50-thousand.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
This is done for both zsock and zsocket classes. Documentation updated. Self-tests<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">added.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">HUH? WHY did you do this?  WHY the HECK would this be useful? <br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
Short answers: <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">    a. I'm a crazy guy doing crazy things.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
    b. Someday, maybe, maybe not, someone might have a cool, nifty zero-day<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">        exploit against zeromq sockets. They might even know the best place to<br>
</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">        look for sockets would be at the beginning of the range 49152 to 64K. Why<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
        make it easy for them to find your sockets? <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">    c. Random port assignments (in this case, using the "!" instead of "*",<br>
        might be a little faster than the "first free port" search, especially</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">        if you request lots of ephemeral ports. Unless the range<br>
</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">        is very crowded, "!"  will most likely find a free port on the first attempt.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
I tested this code using some simple test sets. <br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Check it out!  See:   <a href="https://github.com/WyoMurf/czmq.git">https://github.com/WyoMurf/czmq.git</a><br>
<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">murf<br></div><br>-- <br><div dir="ltr"><br>Steve Murphy<br>ParseTree Corporation<br>57 Lane 17<br>Cody, WY 82414<br>✉  murf at parsetree dot com<br>
☎ 307-899-5535<br><br><br></div>
</div>