如何释放卡住的服务器端口?

我相当肯定,这是节点v0.10.18中的一个bug,但是它对我的机器造成了污染,我不知道该如何清除。

我有这个简单的TCP服务器(咖啡)脚本:

net = require 'net' server = net.createServer -> server.listen 'localhost:4545' 

当我使用coffee z.coffee运行它,然后按Ctrl + C来中断它时,由于EADDRINUSEexception,我无法再在同一端口上运行它。 该过程在不同的端口上重复,结果相同。

我知道关于类似问题的其他答案,但他们无法解决我的问题,因为即使重新启动机器(OSX ml)仍然离开端口被阻止。 显然, ps -A | grep node ps -A | grep node什么也没有。

我能做些什么来再次释放卡住的端口?

编辑

以下是以下评论的摘要。 看来节点使用SO_REUSEADDR是默认的,所以TIME_WAIT不应该成为问题,特别是因为端口已经停留了一个多小时。 netstat和lsof都不能显示任何使用这个端口的东西,既不需要多次重新启动,也不会杀死除了基本程序以外的所有程序,从而帮助解决问题。 没有VPN或防火墙。

https://github.com/joyent/node/blob/3d4c663ee68326990e0732a4aa76445688e1064e/lib/net.js#L1159

你传递无效的参数到server.listen 。 它将您的string解释为unix域套接字文件系统path。

这个程序工作正常,可以立即杀害和重新启动。

 net = require "net" server = net.createServer -> console.log "connection" server.listen 1337, "127.0.0.1" 

将正确的parameter passing给server.listen ,一切正常。