code: def send(self, picture, *args):
          
          return lib.zsock_send(self._as_parameter_, picture, *args)
docs: Send a 'picture' message to the socket (or actor). The picture is a
  string that defines the type of each frame. This makes it easy to send
  a complex multiframe message in one call. The picture can contain any
  of these characters, each corresponding to one or two arguments:
  
      i = int (signed)
      1 = uint8_t
      2 = uint16_t
      4 = uint32_t
      8 = uint64_t
      s = char *
      b = byte *, size_t (2 arguments)
      c = zchunk_t *
      f = zframe_t *
      h = zhashx_t *
      U = zuuid_t *
      p = void * (sends the pointer value, only meaningful over inproc)
      m = zmsg_t * (sends all frames in the zmsg)
      z = sends zero-sized frame (0 arguments)
      u = uint (deprecated)
  
  Note that s, b, c, and f are encoded the same way and the choice is
  offered as a convenience to the sender, which may or may not already
  have data in a zchunk or zframe. Does not change or take ownership of
  any arguments. Returns 0 if successful, -1 if sending failed for any
  reason.