zmq_socket_monitorサービスを使用して、スレッドスポーンメソッドを使用してZMQ_REPソケットを監視しています。しかし、私が知る限り、このサービスはINPROCでのみ機能し、リモートマシン内では機能しません。
My Main code:
void *ctx = zmq_init (1);
void *rep = zmq_socket (ctx, ZMQ_REP);
int rc = zmq_socket_monitor (rep, "inproc://monitor.req", ZMQ_EVENT_ALL);
My Thread Code:
void rep_socket_monitor (void *ctx)
{
zmq_event_t event;
void *s = zmq_socket (ctx, ZMQ_PAIR);
rc = zmq_connect (s, "inproc://monitor.req");
while (true)
{
zmq_msg_t msg;
rc = zmq_recvmsg (s, &msg, 0);
memcpy (&event, zmq_msg_data (&msg), sizeof (event));
switch (event.event)
{
//Check for events
}
}
}
ここでイベントをチェックすると、自分のマシンの監視されたアドレスを取得します。リモートマシンクライアントが私に接続しようとした場合はどうなりますか。監視しているポートに接続されたときにIPアドレスを取得するにはどうすればよいですか。