title: ZMQ PUB Send file
body: <p>I'm trying (PY)ZMQ for the first time, and wonder if it's possible to send a complete FILE (binary) using PUB/SUB?  I need to send database updates to many subscribers. I see examples of short messages but not files.  Is it possible?</p>
  
  <p><em><strong>publisher:</em></strong></p>
  
  <pre><code>import zmq
  import time
  import os
  import sys
  
  while True:
  
  print 'loop'
  msg = 'C:\TEMP\personnel.db'
  
  # Prepare context &amp; publisher
  context = zmq.Context()
  publisher = context.socket(zmq.PUB)
  publisher.bind("tcp://*:2002")
  time.sleep(1)
  
  curFile = 'C:/TEMP/personnel.db'
  size = os.stat(curFile).st_size
  print 'File size:',size
  
  target = open(curFile, 'rb')
  file = target.read(size)
  if file:
      publisher.send(file)
  
  publisher.close()
  context.term()
  target.close()
  time.sleep(10)
  </code></pre>
  
  <p><em><strong>subscriber:</em></strong></p>
  
  <pre><code>'''always listening'''
  
  import zmq
  import os
  import time
  import sys
  
  while True:
  
  path = 'C:/TEST'
  filename = 'personnel.db'
  destfile = path + '/' + filename
  
  if os.path.isfile(destfile):
      os.remove(destfile)
      time.sleep(2)
  
  context = zmq.Context()
  subscriber = context.socket(zmq.SUB)
  subscriber.connect("tcp://127.0.0.1:2002")
  subscriber.setsockopt(zmq.SUBSCRIBE,'')
  
  msg = subscriber.recv(313344)
  if msg:
      f = open(destfile, 'wb')
      print 'open'
      f.write(msg)
      print 'close\n'
      f.close()
  
  time.sleep(5)
  </code></pre>