title: ZeroMQ: How to get the address of the connected clients?
body: <p>When I use regular UDP sockets, I get the address of the remote client from recvfrom().
  When I use regular TCP sockets, I get the address of the remote client as part of calling accept().
  However, in ZeroMQ, there seems to be no good way of getting the address of the remote client.
  If I want to use this for accepting requests from generally untrusted third parties on the internet, then this is highly inconvenient, as there would for example be no way for me to filter which remote nodes would be allowed to subscribe on a particular publisher socket.</p>
  
  <p>What am I missing? Is ZMQ only really suitable for use on a firewall protected LAN / VLAN? A simple "source address" metadata field on each message would for example be pretty useful, as would some way to register a "gatekeeper" that allows or disallows connections on bound sockets.</p>
  
  <p>Note that the "IDENTITY" option on a socket does not solve this problem, as it is trivially spoofable by any source. The source IP/port is by contrast NOT spoofable, if the remote entity wants to get any packets back in response.</p>