从 zmq.error.ZMQError 中恢复:地址已在使用中 [英] Recovering from zmq.error.ZMQError: Address already in use
问题描述
我在运行与 ZMQ 的 PAIR
模式(非阻塞客户端服务器)连接时按下 Ctrl-C.后来当我尝试运行 REQ-REP
(阻止客户端单服务器连接)模式时,我不断收到 Address already in use
错误.我试过用 netstat -ltnp | 运行 netstatgrep :<my port>
但没有列出任何进程.
I hit Ctrl-C while running a PAIR
pattern (non-blocking client servers) connection with ZMQ. Later when I tried running the REQ-REP
(blocking client single server connection) pattern, I keep getting the Address already in use
error. I have tried running netstat with netstat -ltnp | grep :<my port>
but that does not list any process.
那么究竟是谁在使用这个地址?
So who exactly is using this address?
还有如何优雅地关闭这样的套接字连接?
Also how does one gracefully shutdown socket connections like these?
推荐答案
问题 1:
如果你在 Linux 类型的操作系统上执行 sudo netstat -ltnp
,你很可能会看到拥有端口的进程.用 kill -9
杀死它.
If you do sudo netstat -ltnp
, on a Linux type operating system, you will most probably see the process owning the port. Kill it with kill -9 <pid>
.
问题 2:
退出程序时,关闭套接字,然后调用 zmq_ctx_destroy().这破坏了上下文.请参阅 http://zguide.zeromq.org/page:all#toc17 了解更多信息.
When you exit the program, close your sockets and then call zmq_ctx_destroy(). This destroys the context. See http://zguide.zeromq.org/page:all#toc17 for more info.
这篇关于从 zmq.error.ZMQError 中恢复:地址已在使用中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!