如何关闭被杀死程序打开的套接字?

时间:2013-07-31 18:32:25

标签: sockets pyzmq

我有一个程序(Python),在某些时候使用

    zmq.Context.socket(zmq.REP)

    zmq.Context.socket(zmq.PAIR) 

套接字,但问题是,当程序被杀死时,套接字仍然可以使用:

找到
    'ps aux | grep zmq'

命令。那么在程序被杀之后我该怎样做才能让它们消失呢?

2 个答案:

答案 0 :(得分:1)

根据;

https://superuser.com/questions/127863/manually-closing-a-port-from-commandline

只有应用程序可以关闭它正在使用的套接字,在应用程序进程被终止后,套接字应该在几分钟内自动释放。你耐心吗?

答案 1 :(得分:0)

您可以使用SO_REUSEADDR解决该问题

  

SO_REUSEADDR表示验证地址时使用的规则   在bind(2)调用中提供的应该允许重用本地地址。对于   AF_INET套接字这意味着套接字可以绑定,除非在那里   是一个绑定到该地址的活动侦听套接字。当听 -   套接字绑定到INADDR_ANY与特定端口,然后它不是   可以绑定到此端口以获取任何本地地址。争论是一个   整数布尔标志。

这应该是你的大部分问题http://hea-www.harvard.edu/~fine/Tech/addrinuse.html