Hi All,
I have a zmq_proxy device with ROUTER and DEALER in the front and back
(attached code broker.c)
router binds to tcp://*:5551 and dealer binds to tcp://*:6551
the client connects to router with a REQ socket as tcp://nishant:5551 and
worker connects to dealer with a REP socket as tcp://nishant:6551 where
nishant is the hostname of the machine..
the above works fine
however, if I move the client to another machine.. the worker sees the
request but the client doesn't get any response.. what am I doing wrong?
thanks in advance for your help.
--
*Nishant Mittal*
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
use ZMQ::LibZMQ3;
use ZMQ::Constants qw(:all);
my $ctxt = zmq_init;
my $socket = zmq_socket( $ctxt, ZMQ_REQ );
zmq_connect( $socket, "tcp://nishant:5551" );
zmq_send( $socket, "Test");
my $msg = zmq_recvmsg( $socket );
my $data = zmq_msg_data( $msg );
print Dumper $data;
zmq_close($socket);
#include <zmq.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <boost/thread.hpp>
#define NUM_QUEUES 6
using namespace std;
struct zDevice {
void *z_front;
void *z_back;
zDevice(void *z_front, void *z_back) {
this->z_front = z_front;
this->z_back = z_back;
}
void operator()() {
zmq_proxy (z_front, z_back, NULL);
cout << "Ctrl C" << endl;
}
};
int queues[NUM_QUEUES][2] = {
{5550,6550},
{5551,6551},
{5552,6552},
{5553,6553},
{5554,6554},
{5555,6555},
};
int main(int argc, char *argv[]) {
cout << "ZeroMQ: Initializing" << endl;
// Create ZMQ context
void *z_ctx = zmq_ctx_new ();
assert (z_ctx);
cout << "ZeroMQ: Context created" << endl;
boost::thread_group thGrp;
// Create sktTFront and sktTBack sockets
for (int i=0; i<NUM_QUEUES; i++) {
cout << "Creating device for queue #" << (i+1) << endl;
void *frontend = zmq_socket (z_ctx, ZMQ_ROUTER);
assert (frontend);
void *backend = zmq_socket (z_ctx, ZMQ_DEALER);
assert (backend);
// Bind both sockets to TCP ports
stringstream ss;
ss << "tcp://*:" << queues[i][0];
assert (zmq_bind (frontend, ss.str().c_str()) == 0);
ss.str("");
ss << "tcp://*:" << queues[i][1];
assert (zmq_bind (backend, ss.str().c_str()) == 0);
thGrp.create_thread( zDevice(frontend, backend) );
}
thGrp.join_all();
zmq_ctx_destroy(z_ctx);
}
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
use ZMQ::LibZMQ3;
use ZMQ::Constants qw(:all);
my $ctxt = zmq_init;
my $socket = zmq_socket( $ctxt, ZMQ_REP );
zmq_connect( $socket, "tcp://nishant:6551" );
my $msg;
while($msg = zmq_recvmsg( $socket )){
my $data = zmq_msg_data( $msg );
print Dumper $msg;
zmq_send( $socket, "RESPONSE: $data");
}
zmq_close($socket);
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev