portal Michała Hanćkowiaka
Begin main content
wm withdraw .; wm withdraw .output; wm geo .konsola 672x608+66+66

## ZeroMQ - klient
# + linux, tclkit8.5/6, pamietac o ". e" PRZED uruchomieniem konsoli!
#    skrypt "e" ustawia LD_LIBRARY_PATH na kat. z bibl. .so
# + docs:
http://zguide.zeromq.org/page:all#Getting-the-Message-Out
http://wiki.tcl.tk/27462 - zmq
http://wiki.tcl.tk/37718 - msgpck (wersja skryptowa?)
#  jest tez ksiazka w pdf...
#  + uwagi o ZMQ:
#  1. zmq jest nie ma NIC wspolnego ze sposobami serializacji str. danych
#      mozna np. uzywac msgpack
#  2. zmq WYMUSZA odp. kolejnosc recv/send w zaleznosci od wzorca komunikacji: REQ/REP, PUB/SUB, itp
#    np REQ/REP wymaga komunikacji jak w tym przykladzie
#

proc err args {catch $args err; set err}
lappend auto_path ./zeromq
package re zmq
  #% 4.0.1
package re msgpack
  #% 0.5.0

zmq version

#info comm zmq::*; # lista komend pakietu zmq
#info comm msgpack::*
  # + tu uzywa sie ensables, czyli "zmq context" zamiast "zmq::context"

zmq context c1
zmq socket s1 c1 REQ
  #% ::s1

#err s1 qqq
  #% bad method "qqq": must be bind, cget, close, configure, connect, destroy, disconnect, get, getsockopt, readable, recv_msg, send_msg, dump, recv, send, sendmore, set, setsockopt, unbind, writable, recv_monitor_event, or monitor

s1 connect "tcp://localhost:7777"
  #%

s1 send "A ku ku !!! ??? 123"
  #%
  #%
s1 recv
  #% odp na: A ku ku !!! ??? 123
  # + zmq WYMUSZA odp. kolejnosc send/recv !!!
  # + co sie dzieje po chwilowym wylaczeniu serwera ? 05.2020

c1 config
s1 config
  # + introspekcja?

s1 destroy
c1 destroy

# binarna serializacja przy pomocy "msgpack"...
# + mozna tez uzywac innej bibl, np. CDR z Corby lub XDR z Sun RPC
#
msgpack packer p
  #% ::p
p pack string "A ku ku !!!"
p pack double 123.123
  #%
msgpack unpack [p data]
  #% {raw {A ku ku !!!}} {double 123.123}
p destroy
  #%

err p qqq








exit

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...