JeroMQ - 从 Java 客户端向 Python 服务器发送消息

时间:2021-06-21 11:16:11

标签: java python android zeromq jeromq

我正在尝试从使用 JeroMQ 的 Android Java 客户端向使用 ZeroMQ 的 Python 服务器发送消息。我在同一台机器上运行打扰服务器和客户端。服务器在 Jupyter notebook 中运行,而客户端在 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();
}}

服务器似乎没有收到任何东西。知道我哪里出错了吗?

0 个答案:

没有答案