It looks to me like your server only calls recv() once, and the thread only runs once. You need to put that logic in a loop.
-Michel On Wed, Oct 10, 2012 at 1:36 AM, Anna <[email protected]> wrote: > Hi! I'm working on ZMQ, I have a class Client that should send 100 request > to the server, you can see here both classes: > > > public class Client { > > public static void main(String[] args){ > > // Prepare our context and socket > > ZMQ.Context context = ZMQ.context(1); > > ZMQ.Socket socket = context.socket(ZMQ.REQ); > > socket.connect ("tcp://localhost:5555"); > > > > // Do 10 requests, waiting each time for a response > > for(int request_nbr = 0; request_nbr < 100; request_nbr++) { > > > > String requestString = "Hello World"; > > > > byte[] request = requestString.getBytes(); > > //request[request.length-1]=0; //Sets the last byte to 0 > > // Send the message > > //System.out.println("Sending request " + request_nbr + "..."); > > socket.send(request, 0) > > System.out.println("request sended"); > > // Get the reply. > > byte[] reply = socket.recv(0); > > final String value = new String(reply); > > System.out.println("answer " +value); > > > > > > // When displaying reply as a String, omit the last byte > because > > // our "Hello World" server has sent us a 0-terminated string: > > //System.out.println("Received reply " + request_nbr + ": [" + > new String(reply,0,reply.length-1) + "]"); > > } > > } > > > > > public class Server { > > static ZMQ.Context context = ZMQ.context(1); > > static ZMQ.Socket socket = context.socket(ZMQ.REP); > > > > public static void main(String[] args) { > > socket.bind("tcp://*:5555"); > > byte[] request; > > request = socket.recv (0); > > final String value = new String(request); > > > > final Thread thread1 = new Thread( new Runnable() { > > > public void run(){ > > Producer producer = new Producer(); > > producer.requestToRingBuffer(value); > > System.out.println("producer"); > > } > > }); > > thread1.start(); > > //replyIp[replyIp.length-1]=0; Sets the last byte of the reply to 0 > > > > } > > public static void arreplegaDelServer(String loArreplegat){ > > byte[] reply = loArreplegat.getBytes(); > > socket.send(reply,0); > > } > > } > > > As you can see above, the class Server has a thread that does all the job > and on the method arreplegaDelServer I get a reverse of the request done by > the Client. My problem is when I run it the program, the Client makes the > first request it gets the answer from the Server, but when it does the > second request I just get on my terminal the comment "request sended" but I > don't get the comment "producer" which means that the request is on the > thread1 or neither "answer" which show me the answer from the Server, so has > anyone a clue about what is happening? Thanks! > > Anna. > > > _______________________________________________ > zeromq-dev mailing list > [email protected] > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
