从zmq.error.ZMQError恢复:已在使用的地址

Pra*_*kar 16 python unix sockets amqp zeromq

我在运行PAIR与ZMQ 的模式(非阻塞客户端服务器)连接时按Ctrl-C .后来当我尝试运行REQ-REP(阻塞客户端单服务器连接)模式时,我不断收到Address already in use错误.我试过运行netstat netstat -ltnp | grep :<my port>但没有列出任何进程.

那么究竟是谁正在使用这个地址?

另外,如何优雅地关闭这些套接字连接?

jor*_*gen 21

问题1:

如果这样做sudo netstat -ltnp,在Linux类型的操作系统上,您很可能会看到拥有该端口的进程.杀了它kill -9 <pid>.

问题2:

退出程序时,关闭套接字然后调用zmq_ctx_destroy().这破坏了背景.有关详细信息,请参见http://zguide.zeromq.org/page:all#toc17.

  • 几天过去了,我已经解决了这个问题,但我认为 `netstat -ltnp` 需要额外的参数 - 这些参数给了我帮助消息。我还可以将其运行为“netstat -ltnp tcp”,并列出所有 TCP 连接,但不显示 PID。Mac OS X 上的“netstat”可能与其他操作系统上的不同。 (2认同)

use*_*197 6

在这个非常时刻:

reboot
Run Code Online (Sandbox Code Playgroud)

下一个:

开始使用try:/ except:/finally:封装构造,这将有助于您授予体面退出所有ZMQ分配,含。所有的Socket -s'.close()上下文.term(),没有任何悬挂孤儿(S)的内存泄漏(S),即使在任何情况下紧急按钮或者未处理的异常与失去引用约束你还挂着,网络硬件完全中断您的代码执行,实例。