zmq_解除绑定在C中失败

zmq_解除绑定在C中失败,c,zeromq,C,Zeromq,我在C中使用了ØMQ,我注意到当调用zmq_unbind时,它返回-1。我的MQ版本是4.2.2。下面是一个失败的简单代码: #include <stdio.h> #include <stdlib.h> #include "zmq.h" #define SERVER_ENDPOINT "tcp://*:5555" int main(void) { void *context = zmq_ctx_new(); void *socket = zmq_socket(

我在C中使用了ØMQ,我注意到当调用
zmq_unbind
时,它返回-1。我的MQ版本是4.2.2。下面是一个失败的简单代码:

#include <stdio.h>
#include <stdlib.h>
#include "zmq.h"

#define SERVER_ENDPOINT "tcp://*:5555"

int main(void)
{
  void *context = zmq_ctx_new();
  void *socket = zmq_socket(context, ZMQ_REP);
  int rc = zmq_bind(socket, SERVER_ENDPOINT);
  if (rc) {
    fprintf(stderr, "Error: could not bind the socket.\n");
    exit(1);
  }

  rc = zmq_unbind(socket, SERVER_ENDPOINT);
  if (rc) {
    fprintf(stderr, "Error: could not unbind the socket.\n");
    exit(1);
  }
  rc = zmq_close(socket);
  if (rc) {
    fprintf(stderr, "Error: could not close the socket.\n");
    exit(1);
  }

  zmq_ctx_destroy(context);

  return 0;
}
#包括
#包括
#包括“zmq.h”
#定义服务器端点“tcp://*:5555”
内部主(空)
{
void*context=zmq_ctx_new();
void*socket=zmq_socket(上下文,zmq_REP);
int rc=zmq_绑定(套接字、服务器端点);
if(rc){
fprintf(stderr,“错误:无法绑定套接字。\n”);
出口(1);
}
rc=zmq_解除绑定(套接字、服务器_端点);
if(rc){
fprintf(stderr,“错误:无法解除套接字绑定。\n”);
出口(1);
}
rc=zmq_闭合(插座);
if(rc){
fprintf(stderr,“错误:无法关闭套接字。\n”);
出口(1);
}
zmq_ctx_销毁(上下文);
返回0;
}

tcp://*:5555带通配符不是zmq_解除绑定的有效选项

正如这里所建议的:

最后一个端点套接字选项可用于检索实际的 使用通配符时的端点


你能检查错误号吗?@EnricoDetoma
printf(“%d-%s\n”,rc,zmq_strerror(错误号))返回“-1-没有这样的文件或目录”。