java调用zeromq RES-REP模式

服务端启动后等待客户端连接,每个发送数据都会有相应的回应。

代码:

package com.guo.server;

import org.zeromq.ZMQ;
import org.zeromq.ZMQ.Context;
import org.zeromq.ZMQ.Socket;

public class ServerREP {

   public void start(){
       System.out.println("===========server start=============");
       Context context = ZMQ.context(1);
       Socket socket = context.socket(ZMQ.REP);
       socket.bind("tcp://192.168.124.130:5555");
       while(true){
           byte[] request;  
           request = socket.recv(0);
           System.out.println("Received request: [" + new String(request) + "]");  


           try {  
               Thread.sleep(1000);  
           } catch (InterruptedException e) {  
               e.printStackTrace();  
           }  

           String replyString = "World";  
           byte[] reply = replyString.getBytes();  
           socket.send(reply, ZMQ.NOBLOCK);  

           if(new String(request).equals("quit")){
               break;
           }
       }
       System.out.println("===========server end=============");
   }
}

客户端代码:

package com.guo.client;

import org.zeromq.ZMQ;
import org.zeromq.ZMQ.Context;
import org.zeromq.ZMQ.Socket;

public class ClientRES {

   public void start(){
       Context context = ZMQ.context(1);
       Socket socket = context.socket(ZMQ.REQ);
       socket.connect("tcp://192.168.124.130:5555");
       for(int i=0;i<10;i++){
           String requestString = "Hello" ;
           if(i==9){
               requestString = "quit" ;
           }
           byte[] request = requestString.getBytes();  
           // 发送  
           socket.send(request, ZMQ.NOBLOCK);  

           // 获得返回值  
           byte[] reply = socket.recv(0);  
           System.out.println("Received reply " + requestString + ": [" + new String(reply) + "]");
       }
   }


}

循环10次后系统退出。

你可能感兴趣的:(zeromq)