diff --git a/zeromq/.gitignore b/zeromq/.gitignore new file mode 100644 index 0000000..a409554 --- /dev/null +++ b/zeromq/.gitignore @@ -0,0 +1 @@ +hwserver diff --git a/zeromq/with-ruby/Gemfile b/zeromq/Gemfile similarity index 100% rename from zeromq/with-ruby/Gemfile rename to zeromq/Gemfile diff --git a/zeromq/with-ruby/Gemfile.lock b/zeromq/Gemfile.lock similarity index 100% rename from zeromq/with-ruby/Gemfile.lock rename to zeromq/Gemfile.lock diff --git a/zeromq/Makefile b/zeromq/Makefile new file mode 100644 index 0000000..fce3613 --- /dev/null +++ b/zeromq/Makefile @@ -0,0 +1,6 @@ +CFLAGS += -I. -I/usr/local/include +LDFLAGS += -lstdc++ -lpthread -luuid -lrt + + +hwserver: hwserver.c /usr/local/lib/libzmq.a + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) diff --git a/zeromq/hwclient.rb b/zeromq/hwclient.rb new file mode 100644 index 0000000..1561e78 --- /dev/null +++ b/zeromq/hwclient.rb @@ -0,0 +1,24 @@ +# vim:fileencoding=utf-8 + +require 'zmq' + +def main + context = ZMQ::Context.new(1) + + puts "Connecting to hello world server…" + requester = context.socket(ZMQ::REQ) + requester.connect("tcp://localhost:5555") + + 0.upto(9) do |request_nbr| + puts "Sending request #{request_nbr}…" + requester.send("Hello") + + reply = requester.recv(6) + puts "Received reply #{request_nbr}: [#{reply}]" + end +end + + +if $0 == __FILE__ + main +end diff --git a/zeromq/hwserver.c b/zeromq/hwserver.c new file mode 100644 index 0000000..1401470 --- /dev/null +++ b/zeromq/hwserver.c @@ -0,0 +1,34 @@ +#include +#include +#include +#include + +int main(void) +{ + void *context = zmq_init(1); + + void *responder = zmq_socket(context, ZMQ_REP); + printf("Binding server to tcp://*:5555\n"); + zmq_bind(responder, "tcp://*:5555"); + + printf("Starting loop.\n"); + while(1) { + zmq_msg_t request; + zmq_msg_init(&request); + zmq_recv(responder, &request, 0); + printf("Received Hello\n"); + zmq_msg_close(&request); + + sleep(1); + + zmq_msg_t reply; + zmq_msg_init_size(&reply, 5); + memcpy(zmq_msg_data(&reply), "World", 5); + zmq_send(responder, &reply, 0); + zmq_msg_close(&reply); + } + + zmq_close(responder); + zmq_term(context); + return 0; +}