我正在尝试从使用 JeroMQ 的 Android Java 客户端向使用 ZeroMQ 的 Python 服务器发送消息。我在同一台机器上运行打扰服务器和客户端。服务器在 Jupyter 笔记本中运行,而客户端在 Android Studio 上的 Android 设备模拟器中运行。代码如下。Python服务器:
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
while True:
# Wait for next request from client
message = socket.recv_json()
print("Received request: %s" % message)
# Do some 'work'
time.sleep(1)
# Send reply back to client
socket.send(b"World")
这是 Python 客户端(有效):
context = zmq.Context()
# Socket to talk to server
print("Connecting to hello world server…")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
# Do 10 requests, waiting each time for a response for request in range(3):
print("Sending request %s …" % request)
socket.send(b"Hellos")
# Get the reply.
message = socket.recv()
print("Received reply %s [ %s ]" % (request, message))
这是我在 Java 客户端中做同样事情的尝试:
public class MainActivity extends AppCompatActivity {
private final String TAG = "MainActivity";
private ZMQ.Socket req;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
try (ZContext context = new ZContext()) {
// Socket to talk to server
req = context.createSocket(SocketType.REQ);
req.connect("tcp://localhost:5555");
for (int i = 0; i == 3; i++) {
req.send("Hello, this is from Java");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}}
但是,服务器似乎没有收到任何东西。知道我哪里出错了吗?