Android中需要用到有关ZMQ的jar包,本章用的是jeromq 例如:
有需要的可以点击下载对应的版本
zmq是一个消息队列。可以在进程内、进程间、TCP、多播中,以消息为单位传输数据,而不是socket的字节流。
常用模式有:Request-Reply,Publish-Subscribe,Parallel Pipeline。
本章用到的是:Request-Reply
服务端:
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket socket = context.socket(ZMQ.REP);
String url = "tcp://*:9999";
try {
socket.bind(url);//绑定地址
} catch (ZMQException e) {
throw e;
}
boolean wait = true;
while (wait) {
//服务器一直循环
byte[] request;
try {
request = socket.recv(0);//接收的客户端数据
String getData = new String(request);
if (getData.equals("getSingle")) {
socket.send("OK".toString(), 1);
} else {
socket.send("error".toString(), 1);
}
} catch (ZMQException e) {
throw e;
}
}
客户端:
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket socket = context.socket(ZMQ.REQ);
System.out.println("Connecting to hello world server...");
socket.setSendTimeOut(3*1000);
socket.setReceiveTimeOut(3*1000);
socket.setLinger(0);
socket.connect("tcp://localhost:9999");
String requestString = "getSingle";
byte[] request = requestString.getBytes();
socket.send(requestString, 0);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//客户端接收到服务端返回来的消息
byte[] reply = socket.recv(0);